Open GoogleCodeExporter opened 9 years ago
I believe is due to multiple TCPMessageChannel objects each have its own
PipelinedMsgParser but they are reading from the same socket.
You might not see this exception as the logging of the parser is disabled by
default. You will only notice REGISTER timeout because it will fail to locate
the head of REGISTER response and eventually cause timeout.
Original comment by for...@mcdull.us
on 24 May 2013 at 9:07
Here is what I found one situation this can happen.
The TCPMessageChannel objects are stored in a table and each one has a key.
One part of the key is the hostname or IP.
When it has to send a SIP message, it generates a key from the SIP message. If
the message has a route header, it uses the route value to generate the key.
Otherwise, it uses the request uri.
In my case, TCPMessageChannel is first created with route header and the key
contains IP of the server.
When there is an error occurred, ImsServiceSession.terminateSession() is
called. It sends a SIP BYE. However, the SIP BYE uses request-uri to generate
they key which is a hostname. As a result, even though the hostname and IP are
of the same server, it doesn't find a match from the MessageChannel table. A
new TCPMessageChannel is created.
The existing TCPMessageChannel and new TCPMessageChannel are then reading from
the same socket which will eventually cause the issue each channel read a part
of a long SIP message.
Original comment by mcd...@mcdull.us
on 10 Feb 2014 at 7:26
Try to take a look at the following issue from JSIP project:
https://java.net/jira/browse/JSIP-454
Original comment by joaoafon...@gmail.com
on 5 Jun 2014 at 5:07
Original issue reported on code.google.com by
mcd...@mcdull.us
on 20 May 2013 at 6:37