使用mobicents代理

时间:2016-05-30 09:52:39

标签: restcomm mobicents mobicents-sip-servlets

当在mobicents中测试代理时,mobicents不能将再见消息转发给另一个。 当一个用户发送再见时,它只接收481而另一个用户仍然在说话 这种例外仅在呼叫持续时间> = 10s时发生。

我可以看到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)

1 个答案:

答案 0 :(得分:0)

仅在持续时间为&gt;的通话中发生这种情况吗? 3分钟?

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