aboutsummaryrefslogtreecommitdiffstats
path: root/channels
diff options
context:
space:
mode:
authormvanbaak <mvanbaak@f38db490-d61c-443f-a65b-d21fe96a405b>2008-08-01 11:03:07 +0000
committermvanbaak <mvanbaak@f38db490-d61c-443f-a65b-d21fe96a405b>2008-08-01 11:03:07 +0000
commitf79ff6e87f2a356e52ad8403ab3cdfe9e7e08633 (patch)
tree96a3b00e99d7d216433f2930f30eacb3d8daff02 /channels
parent9c48a6a0b13e000ddade5ebc182d37062eacc72c (diff)
Merged revisions 135056 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk ................ r135056 | mvanbaak | 2008-08-01 13:00:13 +0200 (Fri, 01 Aug 2008) | 16 lines 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/branches/1.6.0@135057 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels')
-rw-r--r--channels/chan_skinny.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/channels/chan_skinny.c b/channels/chan_skinny.c
index 8dab03f9f..aae9f5b2d 100644
--- a/channels/chan_skinny.c
+++ b/channels/chan_skinny.c
@@ -1836,6 +1836,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;
}
@@ -5999,6 +6000,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) {
@@ -6011,6 +6013,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)) {
@@ -6020,6 +6023,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",