Я имею дело со случаем частного абонента, когда заголовок конфиденциальности передается только в начальном сообщении INVITE, но не в последующих промежуточных запросах (например, CANCEL).
Когда заголовок Privacy присутствует, мой нисходящий поток ожидает, что я отправлю им другой заголовок.
В большинстве случаев мне удавалось справиться с этим, используя модуль dlg для отслеживания состояния в диалоговом окне, чтобы запросы в середине диалогового окна знали о наличии заголовка Privacy в начальном INVITE.
Однако у меня проблема в том, что только для запроса CANCEL я не могу добавить какие-либо заголовки к запросу SIP, передаваемому в нисходящий поток.
Я читал в других постах (датированных много лет назад), что можно было бы использовать отмены без сохранения состояния вниз по течению. Другой потенциальный вариант - начать новую транзакцию на моем уровне.
Мне интересно, есть ли другие альтернативы этому. Я бы порекомендовал своему нисходящему потоку использовать $ avp, но, похоже, что даже если начальные INVITE и CANCEL должны находиться в одной транзакции, значение $ avp, сохраненное в начальном INVITE, недоступно CANCEL.
Есть и другие приемы, которые могут сработать. Например, использование Record-Route в качестве хранилища данных (что может быть проблемой безопасности) или обращение в нисходящий поток с использованием модуля dlg, что может быть связано с большими потерями производительности.
Интересно, кто-нибудь из вас уже решил эту проблему?