kennyg
kennyg

Reputation: 13

Restcomm sip-servlets does not forward INVITE request

I am trying to do a simple B2BUA application using the Mobicents/Restcomm sip-servlets. At first, it should receive an INVITE, change the R-URI and send the new request - basically call forwarding.

The problem I encountered is that when using the URI with domain name, instead of IP, I get the below error:

        Unexpected exception while processing message INVITE sip:[email protected] SIP/2.0
    ...........
    org.mobicents.servlet.sip.core.DispatcherException: An unexpected IO exception occured while routing the following initial request INVITE sip:[email protected] SIP/2.0
    at org.mobicents.servlet.sip.core.dispatchers.InitialRequestDispatcher$InitialDispatchTask.dispatch(InitialRequestDispatcher.java:753) [sip-servlets-impl-3.1.633.jar:3.1.633]
    at org.mobicents.servlet.sip.core.dispatchers.DispatchTask.dispatchAndHandleExceptions(DispatchTask.java:58) [sip-servlets-impl-3.1.633.jar:3.1.633]
    at org.mobicents.servlet.sip.core.dispatchers.InitialRequestDispatcher.dispatchInsideContainer(InitialRequestDispatcher.java:451) [sip-servlets-impl-3.1.633.jar:3.1.633]
    at org.mobicents.servlet.sip.core.dispatchers.InitialRequestDispatcher.dispatchMessage(InitialRequestDispatcher.java:306) [sip-servlets-impl-3.1.633.jar:3.1.633]
    at org.mobicents.servlet.sip.core.SipApplicationDispatcherImpl.processRequest(SipApplicationDispatcherImpl.java:841) [sip-servlets-impl-3.1.633.jar:3.1.633]
    at gov.nist.javax.sip.EventScanner.deliverEvent(EventScanner.java:230) [jain-sip-ri-1.2.242.jar:1.2.242]
    at gov.nist.javax.sip.SipProviderImpl.handleEvent(SipProviderImpl.java:185) [jain-sip-ri-1.2.242.jar:1.2.242]
    at gov.nist.javax.sip.DialogFilter.processRequest(DialogFilter.java:1324) [jain-sip-ri-1.2.242.jar:1.2.242]
    at gov.nist.javax.sip.stack.SIPServerTransactionImpl.processRequest(SIPServerTransactionImpl.java:807) [jain-sip-ri-1.2.242.jar:1.2.242]
    at gov.nist.javax.sip.stack.UDPMessageChannel.processMessage(UDPMessageChannel.java:560) [jain-sip-ri-1.2.242.jar:1.2.242]
    at gov.nist.javax.sip.stack.UDPMessageChannel.processIncomingDataPacket(UDPMessageChannel.java:512) [jain-sip-ri-1.2.242.jar:1.2.242]
    at gov.nist.javax.sip.stack.UDPMessageChannel.run(UDPMessageChannel.java:317) [jain-sip-ri-1.2.242.jar:1.2.242]
    at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_95]
    Caused by: java.net.ConnectException: Connection refused
    at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) [rt.jar:1.7.0_95]
    at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:744) [rt.jar:1.7.0_95]
    at sun.nio.ch.SocketAdaptor.connect(SocketAdaptor.java:117) [rt.jar:1.7.0_95]
    at gov.nist.javax.sip.stack.NioTcpMessageProcessor.initiateConnection(NioTcpMessageProcessor.java:96) [jain-sip-ri-1.2.242.jar:1.2.242]
    at gov.nist.javax.sip.stack.NioTcpMessageProcessor.blockingConnect(NioTcpMessageProcessor.java:109) [jain-sip-ri-1.2.242.jar:1.2.242]
    at gov.nist.javax.sip.stack.NIOHandler.createOrReuseSocket(NIOHandler.java:408) [jain-sip-ri-1.2.242.jar:1.2.242]
    at gov.nist.javax.sip.stack.NioTcpMessageChannel.<init>(NioTcpMessageChannel.java:192) [jain-sip-ri-1.2.242.jar:1.2.242]
    at gov.nist.javax.sip.stack.NioTcpMessageProcessor.createMessageChannel(NioTcpMessageProcessor.java:394) [jain-sip-ri-1.2.242.jar:1.2.242]
    at gov.nist.javax.sip.stack.SIPTransactionStack.createMessageChannel(SIPTransactionStack.java:1716) [jain-sip-ri-1.2.242.jar:1.2.242]
    at gov.nist.javax.sip.SipProviderImpl.createClientTransaction(SipProviderImpl.java:389) [jain-sip-ri-1.2.242.jar:1.2.242]
    at gov.nist.javax.sip.SipProviderImpl.getNewClientTransaction(SipProviderImpl.java:455) [jain-sip-ri-1.2.242.jar:1.2.242]
    at org.mobicents.servlet.sip.message.SipServletRequestImpl.send(SipServletRequestImpl.java:1213) [sip-servlets-impl-3.1.633.jar:3.1.633]
    at org.mobicents.servlet.sip.message.SipServletRequestImpl.send(SipServletRequestImpl.java:1009) [sip-servlets-impl-3.1.633.jar:3.1.633]
    at com.mycompany.app.FunctionalAddressingServlet.doInvite(FunctionalAddressingServlet.java:100)
    at javax.servlet.sip.SipServlet.doRequest(SipServlet.java:231) [sip-servlets-spec-3.1.633.jar:3.1.633]
    at javax.servlet.sip.SipServlet.service(SipServlet.java:328) [sip-servlets-spec-3.1.633.jar:3.1.633]
    at org.mobicents.servlet.sip.core.dispatchers.MessageDispatcher.callServlet(MessageDispatcher.java:369) [sip-servlets-impl-3.1.633.jar:3.1.633]
    at org.mobicents.servlet.sip.core.dispatchers.InitialRequestDispatcher$InitialDispatchTask.dispatch(InitialRequestDispatcher.java:746) [sip-servlets-impl-3.1.633.jar:3.1.633]
    ... 12 more

this is the doInvite()

protected void doInvite(SipServletRequest request) throws ServletException, IOException {       
    B2buaHelper b2buaHelper = request.getB2buaHelper();
    SipSession session = request.getSession();
    Map<String, List<String>> headerMap = new HashMap<String, List<String>>();
    SipFactory sipFactory = (SipFactory) getServletContext().getAttribute(SIP_FACTORY);
    SipURI destination = (SipURI) sipFactory.createURI("sip:[email protected]");
    SipServletRequest forkedRequest = b2buaHelper.createRequest(request, true, headerMap);
    forkedRequest.setRequestURI(destination);
    forkedRequest.getSession().setAttribute("originalRequest", request);
    forkedRequest.send();   
    }

Could it be the the application is not able to resolve the domain name? If so, is there some specific configuration that should be done in JBOSS?

Any hint would be appreciated, thanks in advance!

EDIT:

After increasing the logging level for gov.nist to INFO, this can be seen:

18:52:07,921 INFO  [gov.nist.javax.sip.stack.NIOHandler] (Mobicents-SIP-Servlets-UDPMessageChannelThread-4) Problem connecting /10.0.0.102 5061 /10.0.0.102
18:52:07,922 INFO  [gov.nist.javax.sip.stack.NIOHandler] (Mobicents-SIP-Servlets-UDPMessageChannelThread-4) Problem OpeningConn:  inAddr 10.0.0.102 port = 5061 retry false

I don't understand now where 5061 is taken from. The source of the request is:

18:52:07,946 INFO  [gov.nist.javax.sip.stack.UDPMessageChannel] (Mobicents-SIP-Servlets-UDPMessageChannelThread-5) Setting SIPMessage peerPacketSource to: /10.0.0.102:5060

And the response should be sent back towards the same port.

The contact header in the INVITE contains udp as transport protocol:

Contact: <sip:[email protected]:54479;transport=udp>;+g.oma.sip-im

Upvotes: 1

Views: 409

Answers (0)

Related Questions