Unlikely I am still struggling with the original problem. I have been inspecting on the hint Bartek gave to me. Unluckly the documentation is very poor and, probably I'm not understanding it completely.
Anyway I will share my results manipulating dar properties file.
Definitions are taken from the SipServlet Specification v1.1
ROUTE modifier indicates that SipApplicationRouterInfo.getRoutes() returns valid routes. It is up to the container to decide whether they are external or if an internal route was returned. All of the routes returned MUST be of the same type, so the container can make the determination by examining the first route only.
2017-10-10 15:55:01,372 ERROR [SipApplicationDispatcherImpl] (pool-AffinityJAIN-thread-1) Unexpected exception while processing request
INVITE sip:test2@mydomain.net SIP/2.0
Via: SIP/2.0/TCP 10.39.117.121:50302;rport=50302;branch=z9hG4bKPj921L-Q-IghWuH.rSX.uNoNMh9T7gZilB;received=10.39.117.121
Via: SIP/2.0/TCP 10.39.117.93:6560;received=10.39.117.93;branch=z9hG4bK+aa78dad05a4a559d9e4635f37906172a1+sip+5+a64ded2b
Route: <sip:moby@moby.dev.mydomain.sys;lr>
Route: <sip:odi_6fWaVvB68v@10.39.117.121:5054;lr;orig>
Record-Route: <sip:sprout.dev.mydomain.sys:5054;transport=TCP;lr;service=scscf;billing-role=charge-orig>
Record-Route: <sip:10.39.117.93:6560;lr>
From: "itsme" <sip:test_1@mydomain.net>;tag=10.39.117.93+5+2cdeefc2+8fc7709c
To: <sip:test2@mydomain.net>
CSeq: 1 INVITE
Expires: 180
Call-Info: <sip:10.39.117.93:6560>;method="NOTIFY;Event=telephone-event;Duration=2000"
P-Charging-Function-Addresses: ccf=pri_ccf_address
Supported: outbound,path,replaces
P-Charging-Vector: icid-value="0be3bd9333dd5089baf80bf17225e3d6";orig-ioi=mydomain.net
Contact: <sip:test_1@195.130.246.72:46973;transport=tcp;rinstance=e637627c20b12d87;ob>;+sip.instance="<urn:uuid:968fdfa1-95d3-59cb-acb3-403d721daeee>"
P-Asserted-Identity: <sip:test_1@mydomain.net>
Max-Forwards: 68
Call-ID: 0gQAAC8WAAACBAAALxYAAOYHyDdZmVO7ntMtj/uEnAYHN75Z51iTlNo7aI6WHcJ6VqorSJqCC0eLxClj9KOJnw--@10.39.117.93
Allow: SUBSCRIBE,NOTIFY,INVITE,ACK,CANCEL,BYE,REFER,INFO,OPTIONS
User-Agent: X-Lite release 5.0.1 stamp 86895
P-Visited-Network-ID: perim.dev.ims.ext1.net
Accept: application/sdp,application/dtmf-relay
Session-Expires: 600
P-Served-User: <sip:test_1@mydomain.net>;regstate=reg;sescase=orig
Content-Type: application/sdp
Content-Length: 281
v=0
o=- 14048926850737 14048926850737 IN IP4 10.39.117.93
s=-
c=IN IP4 10.39.117.93
t=0 0
m=audio 45234 RTP/AVP 120 0 101
a=sendrecv
a=rtpmap:120 opus/48000/2
a=rtpmap:101 telephone-event/8000
a=fmtp:120 useinbandfec=1; usedtx=1; maxaveragebitrate=64000
a=fmtp:101 0-15
org.mobicents.servlet.sip.core.DispatcherException: Impossible to parse the route returned by the application router into a compliant address
at org.mobicents.servlet.sip.core.dispatchers.InitialRequestDispatcher.checkRouteModifier(InitialRequestDispatcher.java:575)
at org.mobicents.servlet.sip.core.dispatchers.InitialRequestDispatcher.dispatchMessage(InitialRequestDispatcher.java:299)
at org.mobicents.servlet.sip.core.SipApplicationDispatcherImpl.processRequest(SipApplicationDispatcherImpl.java:927)
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:1328)
at gov.nist.javax.sip.stack.SIPServerTransactionImpl.processRequest(SIPServerTransactionImpl.java:851)
at gov.nist.javax.sip.stack.ConnectionOrientedMessageChannel.processMessage(ConnectionOrientedMessageChannel.java:473)
at gov.nist.javax.sip.parser.NioPipelineParser$Dispatch.run(NioPipelineParser.java:132)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
at gov.nist.javax.sip.MDCScheduledTHExecutor$MDCFuture.run(MDCScheduledTHExecutor.java:57)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.text.ParseException: :Bad address spec
at gov.nist.javax.sip.parser.Parser.createParseException(Parser.java:45)
at gov.nist.javax.sip.parser.AddressParser.address(AddressParser.java:120)
at gov.nist.javax.sip.parser.StringMsgParser.parseAddress(StringMsgParser.java:328)
at gov.nist.javax.sip.address.AddressFactoryImpl.createAddress(AddressFactoryImpl.java:124)
at org.mobicents.servlet.sip.core.dispatchers.InitialRequestDispatcher.checkRouteModifier(InitialRequestDispatcher.java:537)
... 17 more
I tryied also using the route field to point to the IMS node in order to forward back the SIP message. It works but I think that in this way the AS is not added in a Record-Route header and it cause a loop.
ROUTE_BACK directs the container to push its own route before pushing the external routes obtained from SipApplicationRouterInfo.getRoutes().
Application Router Behavior
In this case I have the following error and the AS answer with a 500.
2017-10-10 15:52:57,276 ERROR [SipApplicationDispatcherImpl] (pool-AffinityJAIN-thread-14) Unexpected exception while processing request
INVITE sip:test2@mydomain.net SIP/2.0
Via: SIP/2.0/TCP 10.39.117.121:43312;rport=43312;branch=z9hG4bKPj5IBDrImFUbO1J.J1LrwUcUQ-rsT28TRh;received=10.39.117.121
Via: SIP/2.0/TCP 10.39.117.93:6560;received=10.39.117.93;branch=z9hG4bK+84bf75e3c2c4ccae314be5e5849bd4961+sip+3+a64ded21
Route: <sip:moby@moby.dev.mydomain.sys;lr>
Route: <sip:odi_kMFF/TQSEV@10.39.117.121:5054;lr;orig>
Record-Route: <sip:sprout.dev.mydomain.sys:5054;transport=TCP;lr;service=scscf;billing-role=charge-orig>
Record-Route: <sip:10.39.117.93:6560;lr>
From: "Gennaro" <sip:test_1@mydomain.net>;tag=10.39.117.93+3+7334eef2+84ee6a06
To: <sip:test2@mydomain.net>
CSeq: 1 INVITE
Expires: 180
Call-Info: <sip:10.39.117.93:6560>;method="NOTIFY;Event=telephone-event;Duration=2000"
P-Charging-Function-Addresses: ccf=pri_ccf_address
Supported: outbound,path,replaces
P-Charging-Vector: icid-value="4167d34dd3fb232bb1f5fcf458dc1a9e";orig-ioi=mydomain.net
Contact: <sip:test_1@195.130.246.72:46973;transport=tcp;rinstance=e637627c20b12d87;ob>;+sip.instance="<urn:uuid:968fdfa1-95d3-59cb-acb3-403d721daeee>"
P-Asserted-Identity: <sip:test_1@mydomain.net>
Max-Forwards: 68
Call-ID: 0gQAAC8WAAACBAAALxYAAK2OW7qCKhw2LAbw9q+UyCfK2Js5PtCkUUpQsljED2+H/KOnkWSV97W3n9Uqpa3r4w--@10.39.117.93
Allow: SUBSCRIBE,NOTIFY,INVITE,ACK,CANCEL,BYE,REFER,INFO,OPTIONS
User-Agent: X-Lite release 5.0.1 stamp 86895
P-Visited-Network-ID: perim.dev.ims.ext1.net
Accept: application/sdp,application/dtmf-relay
Session-Expires: 600
P-Served-User: <sip:test_1@mydomain.net>;regstate=reg;sescase=orig
Content-Type: application/sdp
Content-Length: 281
v=0
o=- 76884298267467 76884298267467 IN IP4 10.39.117.93
s=-
c=IN IP4 10.39.117.93
t=0 0
m=audio 45230 RTP/AVP 120 0 101
a=sendrecv
a=rtpmap:120 opus/48000/2
a=rtpmap:101 telephone-event/8000
a=fmtp:120 useinbandfec=1; usedtx=1; maxaveragebitrate=64000
a=fmtp:101 0-15
java.lang.IllegalArgumentException: not allowed to set parameter, the URI is not modifiable
at org.mobicents.servlet.sip.address.SipURIImpl.setParameter(SipURIImpl.java:401)
at org.mobicents.servlet.sip.core.dispatchers.InitialRequestDispatcher.checkRouteModifier(InitialRequestDispatcher.java:591)
at org.mobicents.servlet.sip.core.dispatchers.InitialRequestDispatcher.dispatchMessage(InitialRequestDispatcher.java:299)
at org.mobicents.servlet.sip.core.SipApplicationDispatcherImpl.processRequest(SipApplicationDispatcherImpl.java:927)
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:1328)
at gov.nist.javax.sip.stack.SIPServerTransactionImpl.processRequest(SIPServerTransactionImpl.java:851)
at gov.nist.javax.sip.stack.ConnectionOrientedMessageChannel.processMessage(ConnectionOrientedMessageChannel.java:473)
at gov.nist.javax.sip.parser.NioPipelineParser$Dispatch.run(NioPipelineParser.java:132)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
at gov.nist.javax.sip.MDCScheduledTHExecutor$MDCFuture.run(MDCScheduledTHExecutor.java:57)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
NO_ROUTE indicates that Application Router is not returning any routes and the SipApplicationRouterInfo.getRoutes() value, if any, should be disregarded.
In this case the request seems to stuck in the AS with no way to forward the request to the IMS node.
Hope this explain the situation.
Thanks