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
10-digiumphones
Damien Wedhorn 14 years ago
parent 030a580bb3
commit bc97128a95

@ -6615,6 +6615,8 @@ static int handle_message(struct skinny_req *req, struct skinnysession *s)
transmit_capabilitiesreq(s->device); transmit_capabilitiesreq(s->device);
} else { } else {
transmit_registerrej(s); transmit_registerrej(s);
ast_free(req);
return -1;
} }
case IP_PORT_MESSAGE: case IP_PORT_MESSAGE:
res = handle_ip_port_message(req, s); res = handle_ip_port_message(req, s);
@ -6934,6 +6936,7 @@ static void *skinny_session(void *data)
res = handle_message(req, s); res = handle_message(req, s);
if (res < 0) { if (res < 0) {
destroy_session(s); destroy_session(s);
ast_verb(3, "Ending Skinny session from %s\n", ast_inet_ntoa(s->sin.sin_addr));
return NULL; return NULL;
} }
} }

Loading…
Cancel
Save