diff --git a/channels/chan_skinny.c b/channels/chan_skinny.c index aeb0605697..6f4231acdb 100644 --- a/channels/chan_skinny.c +++ b/channels/chan_skinny.c @@ -7426,6 +7426,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); } @@ -7512,11 +7517,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); @@ -7682,6 +7682,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); } }