1

在 mobicents 中测试代理时,mobicents 无法将再见消息转发给另一个。当一个用户发送再见时,它只收到 481,而另一个用户仍在通话。
此类异常仅在通话时长 >= 10 秒时发生。

我可以看到 sip 应用程序会话在用户发送再见之前关闭。我不知道如何避免这种情况。请帮我 !!!

下面是我的测试代码:

@Override
protected void doInvite(SipServletRequest request) throws ServletException, IOException {
    List<SipURI> forks = new ArrayList<SipURI>();

    SipURI toURI = (SipURI) request.getTo().getURI();
    SipFactory sipFactory = (SipFactory) getServletContext().getAttribute(SIP_FACTORY);
    forks.add( sipFactory.createSipURI(toURI.getUser(),"192.168.4.160:11180") );
    forks.add( sipFactory.createSipURI("9988003","192.168.4.30:5080") );

    //request.getProxy().setParallel(true);
    List<ProxyBranch> branches = request.getProxy().createProxyBranches( forks );
    for(ProxyBranch branch: branches){
        branch.setRecordRoute(true);
    }
    request.getProxy().startProxy();
}

我的日志中出现异常:

org.mobicents.servlet.sip.core.DispatcherException: Cannot find the corresponding sip application session to this subsequent request BYE sip:9988002@192.168.4.160:11180;transport=udp SIP/2.0
Via: SIP/2.0/UDP 192.168.4.204:11180;rport=11180;branch=z9hG4bKBH36Ht963rXeB;received=192.168.4.204
Max-Forwards: 70
From: "Extension 9988001" <sip:9988001@192.168.4.204>;tag=KtgZ29USetpNj
To: <sip:9988002@192.168.4.89>;tag=vN8t8Xm8yXg2K
Call-ID: 0e0bee76-943b-1234-4ba8-000c29680286
CSeq: 91266548 BYE
Contact: <sip:mod_sofia@192.168.4.204:11180>
User-Agent: FreeSWITCH-mod_sofia/1.2.23~64bit
Allow: INVITE,ACK,BYE,CANCEL,OPTIONS,MESSAGE,INFO,UPDATE,REGISTER,REFER,NOTIFY
Supported: timer,path,replaces
Reason: Q.850;cause=16;text="NORMAL_CLEARING"
Content-Length: 0

 with the following popped route header <sip:192.168.4.89:5060;transport=udp;as=ded31d5f-500e-4c2d-84bb-370065d85c87;appname=1180947b;proxy=true;app_id=7599adf4;lr>, it may already have been invalidated or timed out
    at org.mobicents.servlet.sip.core.dispatchers.SubsequentRequestDispatcher.dispatchMessage(SubsequentRequestDispatcher.java:248)
    at org.mobicents.servlet.sip.core.SipApplicationDispatcherImpl.processRequest(SipApplicationDispatcherImpl.java:861)
    at gov.nist.javax.sip.EventScanner.deliverRequestEvent(EventScanner.java:250)
    at gov.nist.javax.sip.EventScanner.deliverEvent(EventScanner.java:146)
    at gov.nist.javax.sip.SipProviderImpl.handleEvent(SipProviderImpl.java:185)
    at gov.nist.javax.sip.DialogFilter.processRequest(DialogFilter.java:1324)
    at gov.nist.javax.sip.stack.SIPServerTransactionImpl.processRequest(SIPServerTransactionImpl.java:811)
    at gov.nist.javax.sip.stack.UDPMessageChannel.processMessage(UDPMessageChannel.java:578)
    at gov.nist.javax.sip.stack.UDPMessageChannel.processIncomingDataPacket(UDPMessageChannel.java:524)
    at gov.nist.javax.sip.stack.UDPMessageChannel.run(UDPMessageChannel.java:319)
    at java.lang.Thread.run(Thread.java:722)

4

1 回答 1

0

这仅发生在持续时间大于 3 分钟的通话中吗?

sip servlets 规范将 sip 会话的默认持续时间定义为 3 分钟。您可以在 sip.xml session-timeout 属性中修改它,也可以在您的应用程序中以编程方式修改它。

于 2016-05-30T10:10:13.383 回答