Mobicents SIP servlet容器似乎用於處理錯誤響應,與我使用的其他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).
}
感謝您的回覆。使用最新的tomcat版本的mobicents sip servlets(3.0.564)。行爲因Avaya會話管理器,ubiquity sip應用服務器,thrupoint FAS而異,我認爲另一個我不記得名字。收到的錯誤響應是486,但我不認爲這很重要(任何導致應用程序創建新傳輸目標的不成功響應都應該導致服務器在評估新目標時不向上游傳播響應)。現在沒有便利的日誌可以在平板電腦上發佈atm。 Hth,並再次感謝您的回覆。 –
有關響應處理的上下文,請參閱rfc3261,16.7,應該立即向上遊傳播哪些響應,哪些「最佳」響應應該從服務器的響應上下文中上行等。 –
謝謝。您是否可以從一個SNAPSHOT重新生成https://mobicents.ci.cloudbees.com/job/MobicentsSipServlets-Release/lastSuccessfulBuild/artifact/以查看您是否仍面臨相同的行爲。如果你這樣做,請在https://github.com/Mobicents/RestComm/issues/new上打開一個問題。 – jeand