looneyapurv / jain-sip

Automatically exported from code.google.com/p/jain-sip
0 stars 0 forks source link

passToListener() set when sending CANCEL requests #86

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago

SIPTransaction.doesCancelMatchTransaction is called on both Client and Server 
transactions, however only Server transactions should be passed to the 
listener, if it's a client transaction it gets sent to the network instead and 
as a result passToListener is still set when subsequent events arrive leading 
to deadlock cases

Example deadlock scenario:
1. Send and INVITE
2. Send a Cancel on that Invite transaction
3. wait for the client transaction to timeout
4. send a 100 trying, this acquires the semaphore but doesn't release it

Attached is a patch that fixes this issue

Original issue reported on code.google.com by tsea...@gmail.com on 29 Mar 2013 at 11:27

Attachments:

GoogleCodeExporter commented 9 years ago
patch ported to trunk

Original comment by tsea...@gmail.com on 31 Mar 2013 at 8:18

Attachments:

GoogleCodeExporter commented 9 years ago
patch also submitted upstream as
http://java.net/jira/browse/JSIP-448

Original comment by tsea...@gmail.com on 31 Mar 2013 at 8:22