Skip to content

How to use SIP stack with NIO TCP properly? #164

@lhodovsk

Description

@lhodovsk

I was trying to use the SIP stack (latest version) with the NIO TCP message channel. I have set the property "gov.nist.javax.sip.MESSAGE_PROCESSOR_FACTORY" to use the NioMessageProcessorFactory class,
Anyway, then I experienced strange behavior with even one outgoing TCP SIP call. It looked like the received messages were not parsed correctly. E.g. parser for first received OPTIONS from called party complained there is a Content-Length header with value of 133, although there was no any such Header in recieved OPTIONS. Looking into logs I found that 200 OK received for INVITE and also later for UPDATE sent by my application contained the content with the length of 133. Maybe I am missing some configuration, but I have not found any relevant example.

It was working fine with the default MessageProcessorFactory implementation.

A bit of my logs:

1. 200 OK for initial INVITE

21.09.2017 15:25:10,646 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T27 B2BUA/NioSelector-TCP-10.17.53.11/5060/SipStackLogger.logDebug Got something on nioTcpMessageChannel gov.nist.javax.sip.stack.NioTcpMessageChannel@593fd0f1 socket java.nio.channels.SocketChannel[connected local=/10.17.53.11:60258 remote=/10.17.53.43:5060]
21.09.2017 15:25:10,646 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T27 B2BUA/NioSelector-TCP-10.17.53.11/5060/SipStackLogger.logDebug NioTcpMessageChannel::readChannel
21.09.2017 15:25:10,647 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T27 B2BUA/NioSelector-TCP-10.17.53.11/5060/SipStackLogger.logDebug Read 617 from socketChannel
21.09.2017 15:25:10,648 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T27 B2BUA/NioSelector-TCP-10.17.53.11/5060/SipStackLogger.logDebug Received CRLF
21.09.2017 15:25:10,648 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T27 B2BUA/NioSelector-TCP-10.17.53.11/5060/SipStackLogger.logDebug Content Length parsed is 133
21.09.2017 15:25:10,656 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T27 B2BUA/NioSelector-TCP-10.17.53.11/5060/SipStackLogger.logDebug Next thread id=0
21.09.2017 15:25:10,661 +02:00 INFO LX-S-MED-GSP-01 P17488/T46 B2BUA/pool-AffinityJAIN-thread-1/SipStackLogger.logInfo serving msg on call id a0d6555702c3cf6f79d79aed8b74b299@10.17.53.11
21.09.2017 15:25:10,661 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T46 B2BUA/pool-AffinityJAIN-thread-1/SipStackLogger.logDebug
21.09.2017 15:25:10,661 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T46 B2BUA/pool-AffinityJAIN-thread-1/SipStackLogger.logDebug Unparsed message before parser is:
21.09.2017 15:25:10,661 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T46 B2BUA/pool-AffinityJAIN-thread-1/SipStackLogger.logDebug gov.nist.javax.sip.parser.NioPipelineParser$UnparsedMessage@1d40d399
21.09.2017 15:25:10,661 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T46 B2BUA/pool-AffinityJAIN-thread-1/SipStackLogger.logDebug SIP/2.0 200 OK
21.09.2017 15:25:10,661 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T46 B2BUA/pool-AffinityJAIN-thread-1/SipStackLogger.logDebug Via: SIP/2.0/TCP 10.17.53.11:5060; branch=z9hG4bK-363332-193112260b0756b39fa8081e9b4f3d46
21.09.2017 15:25:10,661 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T46 B2BUA/pool-AffinityJAIN-thread-1/SipStackLogger.logDebug Call-ID: a0d6555702c3cf6f79d79aed8b74b299@10.17.53.11
21.09.2017 15:25:10,661 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T46 B2BUA/pool-AffinityJAIN-thread-1/SipStackLogger.logDebug CSeq: 1 INVITE
21.09.2017 15:25:10,661 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T46 B2BUA/pool-AffinityJAIN-thread-1/SipStackLogger.logDebug From: sip:9583@my.com;tag=-712247862
21.09.2017 15:25:10,661 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T46 B2BUA/pool-AffinityJAIN-thread-1/SipStackLogger.logDebug To: sip:recorder@10.17.53.43;tag=5A36DCFD-F35B-4E67-A840-E87B6362FC27
21.09.2017 15:25:10,661 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T46 B2BUA/pool-AffinityJAIN-thread-1/SipStackLogger.logDebug Contact: sip:recorder@10.17.53.43:5060
21.09.2017 15:25:10,661 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T46 B2BUA/pool-AffinityJAIN-thread-1/SipStackLogger.logDebug Date: Thu, 21 Sep 2017 13:25:10 GMT
21.09.2017 15:25:10,661 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T46 B2BUA/pool-AffinityJAIN-thread-1/SipStackLogger.logDebug User-Agent: Recorder.SDP/400.00.001 libTPP/3.33.006
21.09.2017 15:25:10,661 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T46 B2BUA/pool-AffinityJAIN-thread-1/SipStackLogger.logDebug Content-Type: application/sdp
21.09.2017 15:25:10,661 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T46 B2BUA/pool-AffinityJAIN-thread-1/SipStackLogger.logDebug Content-Length: 133
21.09.2017 15:25:10,661 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T46 B2BUA/pool-AffinityJAIN-thread-1/SipStackLogger.logDebug
21.09.2017 15:25:10,661 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T46 B2BUA/pool-AffinityJAIN-thread-1/SipStackLogger.logDebug ;
21.09.2017 15:25:10,663 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T46 B2BUA/pool-AffinityJAIN-thread-1/SipStackLogger.logDebug acquireSem [[[[gov.nist.javax.sip.stack.SIPClientTransactionImpl@8bbf3f41
21.09.2017 15:25:10,664 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T46 B2BUA/pool-AffinityJAIN-thread-1/SipStackLogger.logDebug acquireSem() returning : true

2. received 200 OK for UPDATE message

21.09.2017 15:25:10,857 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T27 B2BUA/NioSelector-TCP-10.17.53.11/5060/SipStackLogger.logDebug Got something on nioTcpMessageChannel gov.nist.javax.sip.stack.NioTcpMessageChannel@593fd0f1 socket java.nio.channels.SocketChannel[connected local=/10.17.53.11:60258 remote=/10.17.53.43:5060]
21.09.2017 15:25:10,857 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T27 B2BUA/NioSelector-TCP-10.17.53.11/5060/SipStackLogger.logDebug NioTcpMessageChannel::readChannel
21.09.2017 15:25:10,857 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T27 B2BUA/NioSelector-TCP-10.17.53.11/5060/SipStackLogger.logDebug Read 617 from socketChannel
21.09.2017 15:25:10,858 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T27 B2BUA/NioSelector-TCP-10.17.53.11/5060/SipStackLogger.logDebug Received CRLF
21.09.2017 15:25:10,858 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T27 B2BUA/NioSelector-TCP-10.17.53.11/5060/SipStackLogger.logDebug Content Length parsed is 133
21.09.2017 15:25:10,858 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T27 B2BUA/NioSelector-TCP-10.17.53.11/5060/SipStackLogger.logDebug Next thread id=0
21.09.2017 15:25:10,859 +02:00 INFO LX-S-MED-GSP-01 P17488/T46 B2BUA/pool-AffinityJAIN-thread-1/SipStackLogger.logInfo serving msg on call id a0d6555702c3cf6f79d79aed8b74b299@10.17.53.11
21.09.2017 15:25:10,860 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T46 B2BUA/pool-AffinityJAIN-thread-1/SipStackLogger.logDebug
21.09.2017 15:25:10,860 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T46 B2BUA/pool-AffinityJAIN-thread-1/SipStackLogger.logDebug Unparsed message before parser is:
21.09.2017 15:25:10,860 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T46 B2BUA/pool-AffinityJAIN-thread-1/SipStackLogger.logDebug gov.nist.javax.sip.parser.NioPipelineParser$UnparsedMessage@69d0b343
21.09.2017 15:25:10,860 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T46 B2BUA/pool-AffinityJAIN-thread-1/SipStackLogger.logDebug SIP/2.0 200 OK
21.09.2017 15:25:10,860 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T46 B2BUA/pool-AffinityJAIN-thread-1/SipStackLogger.logDebug Via: SIP/2.0/TCP 10.17.53.11:5060; branch=z9hG4bK-363332-02eac2f55df871532ebb2a66ac9c1e41
21.09.2017 15:25:10,860 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T46 B2BUA/pool-AffinityJAIN-thread-1/SipStackLogger.logDebug Call-ID: a0d6555702c3cf6f79d79aed8b74b299@10.17.53.11
21.09.2017 15:25:10,860 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T46 B2BUA/pool-AffinityJAIN-thread-1/SipStackLogger.logDebug CSeq: 2 UPDATE
21.09.2017 15:25:10,860 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T46 B2BUA/pool-AffinityJAIN-thread-1/SipStackLogger.logDebug From: sip:9583@my.com;tag=-712247862
21.09.2017 15:25:10,860 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T46 B2BUA/pool-AffinityJAIN-thread-1/SipStackLogger.logDebug To: sip:recorder@10.17.53.43;tag=5A36DCFD-F35B-4E67-A840-E87B6362FC27
21.09.2017 15:25:10,860 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T46 B2BUA/pool-AffinityJAIN-thread-1/SipStackLogger.logDebug Contact: sip:recorder@10.17.53.43:5060
21.09.2017 15:25:10,860 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T46 B2BUA/pool-AffinityJAIN-thread-1/SipStackLogger.logDebug Date: Thu, 21 Sep 2017 13:25:10 GMT
21.09.2017 15:25:10,860 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T46 B2BUA/pool-AffinityJAIN-thread-1/SipStackLogger.logDebug User-Agent: Recorder.SDP/400.00.001 libTPP/3.33.006
21.09.2017 15:25:10,860 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T46 B2BUA/pool-AffinityJAIN-thread-1/SipStackLogger.logDebug Content-Type: application/sdp
21.09.2017 15:25:10,860 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T46 B2BUA/pool-AffinityJAIN-thread-1/SipStackLogger.logDebug Content-Length: 133
21.09.2017 15:25:10,860 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T46 B2BUA/pool-AffinityJAIN-thread-1/SipStackLogger.logDebug
21.09.2017 15:25:10,860 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T46 B2BUA/pool-AffinityJAIN-thread-1/SipStackLogger.logDebug ;
21.09.2017 15:25:10,863 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T46 B2BUA/pool-AffinityJAIN-thread-1/SipStackLogger.logDebug acquireSem [[[[gov.nist.javax.sip.stack.SIPClientTransactionImpl@cd0baa51
21.09.2017 15:25:10,863 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T46 B2BUA/pool-AffinityJAIN-thread-1/SipStackLogger.logDebug acquireSem() returning : true

3. received OPTIONS with non-existing, but reported Content-Length

21.09.2017 15:25:20,996 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T27 B2BUA/NioSelector-TCP-10.17.53.11/5060/SipStackLogger.logDebug We got selkey sun.nio.ch.SelectionKeyImpl@388977e7
21.09.2017 15:25:20,996 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T27 B2BUA/NioSelector-TCP-10.17.53.11/5060/SipStackLogger.logDebug Read sun.nio.ch.SelectionKeyImpl@388977e7
21.09.2017 15:25:20,996 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T27 B2BUA/NioSelector-TCP-10.17.53.11/5060/SipStackLogger.logDebug Got something on nioTcpMessageChannel gov.nist.javax.sip.stack.NioTcpMessageChannel@593fd0f1 socket java.nio.channels.SocketChannel[connected local=/10.17.53.11:60258 remote=/10.17.53.43:5060]
21.09.2017 15:25:20,996 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T27 B2BUA/NioSelector-TCP-10.17.53.11/5060/SipStackLogger.logDebug NioTcpMessageChannel::readChannel
21.09.2017 15:25:20,996 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T27 B2BUA/NioSelector-TCP-10.17.53.11/5060/SipStackLogger.logDebug Read 426 from socketChannel
21.09.2017 15:25:20,997 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T27 B2BUA/NioSelector-TCP-10.17.53.11/5060/SipStackLogger.logDebug Received CRLF
21.09.2017 15:25:20,997 +02:00 DEBUG LX-S-MED-GSP-01 P17488/T27 B2BUA/NioSelector-TCP-10.17.53.11/5060/SipStackLogger.logDebug Content Length parsed is 133

4. later there was an exception reported:

21.09.2017 15:25:22,011 +02:00 INFO LX-S-MED-GSP-01 P17488/T25 B2BUA/EventScannerThread/SipEventDistributor.processRequest processRequest RequestEventExt[remoteIpAddress=10.17.53.43,remotePort=5060,m_request=OPTIONS sip:9583@my.com SIP/2.0, Via: SIP/2.0/TCP 10.17.53.11:5060branch=z9hG4bK-363332-193112260b0756b39fa8081e9b4f3d46received=10.17.53.43rport=5060, From: sip:recorder@10.17.53.43tag=5A36DCFD-F35B-4E67-A840-E87B6362FC27, To: sip:9583@my.comtag=-712247862, Call-ID: a0d6555702c3cf6f79d79aed8b74b299@10.17.53.11, CSeq: 0 OPTIONS, Date: Thu, 21 Sep 2017 13:25:21 GMT, User-Agent: Recorder.SDP/400.00.001 libTPP/3.33.006, Content-Length: 133, , OPTIONS sip:9583@my.com SIP/2.0, Via: SIP/2.0/TCP 10.17.53.11:5060 branch=z9hG4bK-363332-193112260b0756b39fa8081e9b4,m_transaction=gov.nist.javax.sip.stack.SIPServerTransactionImpl@8bbf3f41,m_dialog=gov.nist.javax.sip.stack.SIPDialog@32c2f2b2]
21.09.2017 15:25:22,011 +02:00 ERROR LX-S-MED-GSP-01 P17488/T25 B2BUA/EventScannerThread/SipStackLogger.logException If there is a message body the media type MUST be given by the Content-Type header field.
21.09.2017 15:25:22,011 +02:00 ERROR LX-S-MED-GSP-01 P17488/T25 B2BUA/EventScannerThread/SipStackLogger.logException java.lang.IllegalArgumentException: If there is a message body the media type MUST be given by the Content-Type header field.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions