mirror of
https://github.com/asterisk/asterisk.git
synced 2026-06-18 05:25:16 +00:00
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) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@105734 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
+9
-2
@@ -2200,8 +2200,10 @@ static void *_sip_tcp_helper_thread(struct sip_pvt *pvt, struct server_instance
|
||||
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 @@ cleanup:
|
||||
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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user