From bc97128a95f9c0eaac9f412f2f268c6d7bc1a87c Mon Sep 17 00:00:00 2001 From: Damien Wedhorn Date: Sun, 9 Oct 2011 22:18:27 +0000 Subject: [PATCH] Return -1 to skinny_session if register rejected. If device registration is rejected, return -1 so that the session is destroyed immediately. Previously, a segfault would occur on a graceful shutdown if a register is rejected and the skinny_session has not yet timed out. git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/10@340031 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- channels/chan_skinny.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/channels/chan_skinny.c b/channels/chan_skinny.c index d792ee4c66..0877684f1a 100644 --- a/channels/chan_skinny.c +++ b/channels/chan_skinny.c @@ -6615,6 +6615,8 @@ static int handle_message(struct skinny_req *req, struct skinnysession *s) transmit_capabilitiesreq(s->device); } else { transmit_registerrej(s); + ast_free(req); + return -1; } case IP_PORT_MESSAGE: res = handle_ip_port_message(req, s); @@ -6934,6 +6936,7 @@ static void *skinny_session(void *data) res = handle_message(req, s); if (res < 0) { destroy_session(s); + ast_verb(3, "Ending Skinny session from %s\n", ast_inet_ntoa(s->sin.sin_addr)); return NULL; } }