diff options
-rw-r--r-- | channels/chan_skinny.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/channels/chan_skinny.c b/channels/chan_skinny.c index 684857925..b120c79cc 100644 --- a/channels/chan_skinny.c +++ b/channels/chan_skinny.c @@ -7428,6 +7428,11 @@ static void destroy_session(struct skinnysession *s) } ast_mutex_unlock(&s->lock); ast_mutex_destroy(&s->lock); + + if (s->t != AST_PTHREADT_NULL) { + pthread_detach(s->t); + } + ast_free(s); } @@ -7514,11 +7519,6 @@ static void *skinny_session(void *data) int eventmessage = 0; struct pollfd fds[1]; - if (!s) { - ast_log(LOG_WARNING, "Bad Skinny Session\n"); - return 0; - } - ast_log(LOG_NOTICE, "Starting Skinny session from %s\n", ast_inet_ntoa(s->sin.sin_addr)); pthread_cleanup_push(skinny_session_cleanup, s); @@ -7684,6 +7684,7 @@ static void *accept_thread(void *ignore) s->keepalive_timeout_sched = -1; if (ast_pthread_create(&s->t, NULL, skinny_session, s)) { + s->t = AST_PTHREADT_NULL; destroy_session(s); } } |