[asterisk-commits] russell: trunk r105734 - /trunk/channels/chan_sip.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Tue Mar 4 14:36:17 CST 2008
Author: russell
Date: Tue Mar 4 14:36:16 2008
New Revision: 105734
URL: http://svn.digium.com/view/asterisk?view=rev&rev=105734
Log:
Fix some bugs in the SIP tcp helper thread.
- fix a spot where a lock wouldn't get unlocked in an error condition
- call ast_mutex_destroy() on the lock before freeing its memory
(related to issue #11972)
Modified:
trunk/channels/chan_sip.c
Modified: trunk/channels/chan_sip.c
URL: http://svn.digium.com/view/asterisk/trunk/channels/chan_sip.c?view=diff&rev=105734&r1=105733&r2=105734
==============================================================================
--- trunk/channels/chan_sip.c (original)
+++ trunk/channels/chan_sip.c Tue Mar 4 14:36:16 2008
@@ -2200,8 +2200,10 @@
while (req.len < 4 || strncmp((char *)&req.data + req.len - 4, "\r\n\r\n", 4)) {
if (req.socket.lock)
ast_mutex_lock(req.socket.lock);
- if (!fgets(buf, sizeof(buf), ser->f))
+ if (!fgets(buf, sizeof(buf), ser->f)) {
+ ast_mutex_unlock(req.socket.lock);
goto cleanup;
+ }
if (req.socket.lock)
ast_mutex_unlock(req.socket.lock);
if (me->stop)
@@ -2237,7 +2239,12 @@
cleanup2:
fclose(ser->f);
ast_free(ser);
- ast_free(req.socket.lock);
+
+ if (req.socket.lock) {
+ ast_mutex_destroy(req.socket.lock);
+ ast_free(req.socket.lock);
+ req.socket.lock = NULL;
+ }
return NULL;
}
More information about the asterisk-commits
mailing list