From: Mathieu Parent Date: Fri, 21 May 2010 13:35:12 +0000 (+0200) Subject: Skinny: Avoid message too short for off_hook X-Git-Tag: git2svn-syncpoint-master~21 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2cb595c71c1503d040b30c8a7159359c018bf685;p=thirdparty%2Ffreeswitch.git Skinny: Avoid message too short for off_hook Resolve MODSKINNY-1: FreeSwitch stops working when I use a cisco 7910 phone - FREESWITCH 1.0.6 --- diff --git a/src/mod/endpoints/mod_skinny/skinny_server.c b/src/mod/endpoints/mod_skinny/skinny_server.c index e8106445fe..ab47d8553b 100644 --- a/src/mod/endpoints/mod_skinny/skinny_server.c +++ b/src/mod/endpoints/mod_skinny/skinny_server.c @@ -1201,19 +1201,19 @@ switch_status_t skinny_handle_stimulus_message(listener_t *listener, skinny_mess switch_status_t skinny_handle_off_hook_message(listener_t *listener, skinny_message_t *request) { - uint32_t line_instance; + uint32_t line_instance = 1; + uint32_t call_id = 0; switch_core_session_t *session = NULL; private_t *tech_pvt = NULL; - skinny_check_data_length(request, sizeof(request->data.off_hook)); - - if(request->data.off_hook.line_instance > 0) { - line_instance = request->data.off_hook.line_instance; - } else { - line_instance = 1; + if(skinny_check_data_length_soft(request, sizeof(request->data.off_hook))) { + if (request->data.off_hook.line_instance > 0) { + line_instance = request->data.off_hook.line_instance; + } + call_id = request->data.off_hook.call_id; } - session = skinny_profile_find_session(listener->profile, listener, &line_instance, request->data.off_hook.call_id); + session = skinny_profile_find_session(listener->profile, listener, &line_instance, call_id); if(session) { /*answering a call */ skinny_session_answer(session, listener, line_instance);