res_pjsip_t38: Don't pass T.38 control frames through to other hooks.
authorJoshua Colp <jcolp@digium.com>
Wed, 4 Dec 2013 20:54:52 +0000 (20:54 +0000)
committerJoshua Colp <jcolp@digium.com>
Wed, 4 Dec 2013 20:54:52 +0000 (20:54 +0000)
This crept up during gateway testing where the gateway would receive
the request to negotiate and assume it came from the remote side, causing
the gateway state machine to go a little, to a use a technical term,
"wonky".
........

Merged revisions 403364 from http://svn.asterisk.org/svn/asterisk/branches/12

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@403365 65c4cc65-6c06-0410-ace0-fbb531ad65f3

res/res_pjsip_t38.c

index 021fe4f..3c97784 100644 (file)
@@ -113,11 +113,7 @@ static struct t38_parameters_task_data *t38_parameters_task_data_alloc(struct as
 
        data->session = session;
        ao2_ref(session, +1);
-
-       if (!(data->frame = ast_frdup(frame))) {
-               ao2_cleanup(data);
-               return NULL;
-       }
+       data->frame = frame;
 
        return data;
 }
@@ -396,6 +392,8 @@ static struct ast_frame *t38_framehook_write(struct ast_sip_session *session, st
                if (ast_sip_push_task(session->serializer, t38_interpret_parameters, data)) {
                        ao2_ref(data, -1);
                }
+
+               f = &ast_null_frame;
        } else if (f->frametype == AST_FRAME_MODEM) {
                RAII_VAR(struct ast_sip_session_media *, session_media, NULL, ao2_cleanup);