diff options
author | mvanbaak <mvanbaak@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-08-01 11:00:13 +0000 |
---|---|---|
committer | mvanbaak <mvanbaak@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-08-01 11:00:13 +0000 |
commit | 7ec166b840ce2ce8f66e1fbe53ccb15b6f512d4a (patch) | |
tree | e1e7c9f66c9b76548b065536c13853ee2a1fe4fc /channels | |
parent | 8e7bccd3c667dcf7cd7cd0bf5036dd6c4d0eb950 (diff) |
Merged revisions 135055 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r135055 | mvanbaak | 2008-08-01 12:55:27 +0200 (Fri, 01 Aug 2008) | 8 lines
fix some potential deadlocks in chan_skinny
(closes issue #13215)
Reported by: qwell
Patches:
2008080100_bug13215.diff.txt uploaded by mvanbaak (license 7)
Tested by: mvanbaak
........
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@135056 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels')
-rw-r--r-- | channels/chan_skinny.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/channels/chan_skinny.c b/channels/chan_skinny.c index c7d2c9b1e..db95ce8ef 100644 --- a/channels/chan_skinny.c +++ b/channels/chan_skinny.c @@ -1839,6 +1839,7 @@ static int transmit_response(struct skinnysession *s, struct skinny_req *req) if (letohl(req->len > SKINNY_MAX_PACKET) || letohl(req->len < 0)) { ast_log(LOG_WARNING, "transmit_response: the length of the request is out of bounds\n"); + ast_mutex_unlock(&s->lock); return -1; } @@ -2872,7 +2873,7 @@ static char *handle_skinny_show_lines(struct ast_cli_entry *e, int cmd, struct a l->label); } } - AST_LIST_LOCK(&devices); + AST_LIST_UNLOCK(&devices); return CLI_SUCCESS; } @@ -6274,6 +6275,7 @@ static int reload_config(void) if(setsockopt(skinnysock, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)) == -1) { ast_log(LOG_ERROR, "Set Socket Options failed: errno %d, %s\n", errno, strerror(errno)); ast_config_destroy(cfg); + ast_mutex_unlock(&netlock); return 0; } if (skinnysock < 0) { @@ -6286,6 +6288,7 @@ static int reload_config(void) close(skinnysock); skinnysock = -1; ast_config_destroy(cfg); + ast_mutex_unlock(&netlock); return 0; } if (listen(skinnysock,DEFAULT_SKINNY_BACKLOG)) { @@ -6295,6 +6298,7 @@ static int reload_config(void) close(skinnysock); skinnysock = -1; ast_config_destroy(cfg); + ast_mutex_unlock(&netlock); return 0; } ast_verb(2, "Skinny listening on %s:%d\n", |