2015-05-29 2 views
2

Контейнер сервлета Mobicents SIP, по-видимому, обрабатывает ответы об ошибках по-разному с другими контейнерами SIP, которые я использовал. Ситуация такова, что:Mobicents Обработка ответов об ошибках SIP - каков правильный способ повторного прокси-сервера?

  • При получении ПРИГЛАШЕНИЕ, приложение ручки и прокси-серверов (контролируемой) вниз по течению (так что он может получить ответы на приглашение).

  • При получении ответа об ошибке от начальной цели прокси-приложения к новому месту назначения (неконтролируемым способом).

Это должно предотвратить распространение первоначальной ошибки в восходящем потоке (поскольку транзакция имеет новую цель). Однако, с контейнером Mobicents, даже несмотря на то, что INVITE действительно проксирован в новое место назначения, первоначально принятый ответ об ошибке по-прежнему распространяется вверх по потоку. Я считаю, что это ошибка в реализации Mobicents, но как это работает?

Код:

public void doInvite(SipServletRequest req) { 
    req.getProxy().proxyTo(req.getRequestURI()); 
} 

public void doError(SipServletResponse res) { 
    Proxy p = res.getProxy(); 
    p.setSupervised(false); 
    p.proxyTo(...); 
    // request is proxied, but the error response still passes 
    // upstream - the retargeting of the transaction (through 
    // proxying to a new destination ought to prevent that). 
} 

ответ

0

Какие другие контейнеры SIP вы миграции приложения из? Вы выполняете последовательное или параллельное проксирование? Какой ответ на ошибку вы получаете? Какую версию контейнера сервлетов Mobicents SIP вы используете? У вас есть полный журнал, доступный на gist.github.com или pastebin.com?

+0

Спасибо за ответ. Использование последней версии tomcat для серфинга sip сервлета (3.0.564). Поведение варьируется от менеджера сеансов Avaya, сервера приложений для расширения памяти, thrupoint FAS, и я также думаю, что я не могу вспомнить имя. Полученный ответ на ошибку - 486, но я не считаю, что это имеет значение (любой ответ с неуспехом, который приводит к созданию приложения с новыми целями трансакции, должен привести к тому, что сервер не будет распространять ответ вверх по течению при оценке новых целей). У меня нет журнала, который можно было бы опубликовать как на планшете прямо сейчас. Hth, и еще раз спасибо за ответ. –

+0

См. Rfc3261, 16.7 для контекста относительно обработки ответов, какие ответы должны быть немедленно распространены вверх по потоку, какие «лучшие» ответы должны идти вверх по течению от контекста ответа сервера и т. Д. –

+0

Спасибо. Можете ли вы повторить попытку сборки SNAPSHOT здесь https://mobicents.ci.cloudbees.com/job/MobicentsSipServlets-Release/lastSuccessfulBuild/artifact/, чтобы убедиться, что вы по-прежнему сталкиваетесь с таким же поведением. Если вы это сделаете, откройте проблему на https://github.com/Mobicents/RestComm/issues/new. – jeand

0

В качестве чистого прокси-решения Mobicents выполняет правильное поведение пересылки ответа об ошибке обратно инициатору вызова, и, следовательно, логика последовательного форкирования [на основе кода ошибки] должна быть обработана на стороне вызывающего абонента.

Но если вы хотите, чтобы это поведение было связано с мобильными устройствами, вам необходимо запустить режим B2BUA для мобильных устройств, которые должны дать вам более подробный контроль над выбором поведения, независимым от двух вызовов (вход/выход).

Оригинатор получает 183-ход вызова для INVITE [входной ножки], в то время как последовательные повторы могут обрабатываться на выходе, без риска начальных тайм-аутов, происходящих на Ingress.

+0

Спасибо за ответ. Я понимаю вашу точку зрения, что сервер, похоже, ведет себя правильно с точки зрения, что для доверенного лица кажется разумным прокси-сервер, что он получает. Однако неверно говорить, что сервер ведет себя правильно, делая это в этом случае. Прокси не должен проксировать каждое сообщение, и это один из примеров (так как приложение, контролирующее транзакцию, дало попыткам новых транзакций для контейнера). –

+0

Поведение контейнера ошибочно, так как оно пытается выполнить новую цель (ы) путем проксирования приглашения, но также предотвращает возможность успешной установки этих целей, поскольку позволяет вызываемому получать первый полученный ответ. Как вы указывать, работая как B2bua, позволяла бы более тонкий контроль над сеансами sip, но не обязательно, если было исправлено поведение прокси. Спасибо за это предложение, хотя и за ответ :-) –