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