Hi,

I have found a lockup in _trans_layer::send_reply(), if an already closed transaction was replied, the function returns without releasing the lock. This was probably introduced when the checking was moved from update_uas_reply() to send_reply(). I could trigger it when handling the CANCEL message: my application replied it with 200, but since 1.5.0, the SEMS core also replies it. The attached patch fixes the issue.

br

Szo
diff --git a/core/sip/trans_layer.cpp b/core/sip/trans_layer.cpp
index e106ca3..fc649e8 100644
--- a/core/sip/trans_layer.cpp
+++ b/core/sip/trans_layer.cpp
@@ -132,6 +132,7 @@ int _trans_layer::send_reply(trans_ticket* tt,
     }
 
     if(t->reply_status >= 200){
+	bucket->unlock();
 	ERROR("Transaction has already been closed with a final reply\n");
 	return -1;
     }
_______________________________________________
Semsdev mailing list
[email protected]
http://lists.iptel.org/mailman/listinfo/semsdev

Reply via email to