mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-05 04:11:08 +00:00
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: https://origsvn.digium.com/svn/asterisk/branches/1.4@135055 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -1476,6 +1476,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;
|
||||
}
|
||||
|
||||
@@ -4819,6 +4820,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) {
|
||||
@@ -4831,6 +4833,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)) {
|
||||
@@ -4840,6 +4843,7 @@ static int reload_config(void)
|
||||
close(skinnysock);
|
||||
skinnysock = -1;
|
||||
ast_config_destroy(cfg);
|
||||
ast_mutex_unlock(&netlock);
|
||||
return 0;
|
||||
}
|
||||
if (option_verbose > 1)
|
||||
|
Reference in New Issue
Block a user