Index: channels/chan_skinny.c =================================================================== --- channels/chan_skinny.c (revision 89304) +++ channels/chan_skinny.c (working copy) @@ -2957,12 +2957,16 @@ static int handle_keep_alive_message(struct skinny_req *req, struct skinnysession *s) { - if (!(req = req_alloc(0, KEEP_ALIVE_ACK_MESSAGE))) - return -1; + if (s && s->device->registered) { + if (!(req = req_alloc(0, KEEP_ALIVE_ACK_MESSAGE))) + return -1; - transmit_response(s, req); - do_housekeeping(s); - return 1; + transmit_response(s, req); + do_housekeeping(s); + return 1; + } else { + skinny_register(req, s); + } } static int handle_register_message(struct skinny_req *req, struct skinnysession *s)