[asterisk-commits] file: branch 13 r429612 - /branches/13/res/res_pjsip_t38.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Tue Dec 16 09:43:59 CST 2014


Author: file
Date: Tue Dec 16 09:43:51 2014
New Revision: 429612

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=429612
Log:
res_pjsip_t38: Fix T.38 failure when peer reinvites immediately.

If a remote endpoint reinvites to T.38 immediately the state machine
will go into a peer reinvite state. If a T.38 capable application
(such as ReceiveFax) queries it will receive this state. Normally
the application will then indicate so that the channel driver will
queue up the T.38 offer previously received. Once it receives this
offer the application will act normally and negotiate.

The res_pjsip_t38 module incorrectly partially squashed this indication.
This would cause the application to think the request had failed when
in reality it had actually worked.

This change makes it so that no T.38 control frames (or indications)
are squashed.

Modified:
    branches/13/res/res_pjsip_t38.c

Modified: branches/13/res/res_pjsip_t38.c
URL: http://svnview.digium.com/svn/asterisk/branches/13/res/res_pjsip_t38.c?view=diff&rev=429612&r1=429611&r2=429612
==============================================================================
--- branches/13/res/res_pjsip_t38.c (original)
+++ branches/13/res/res_pjsip_t38.c Tue Dec 16 09:43:51 2014
@@ -113,7 +113,11 @@
 
 	data->session = session;
 	ao2_ref(session, +1);
-	data->frame = frame;
+	data->frame = ast_frdup(frame);
+	if (!data->frame) {
+		ao2_ref(data, -1);
+		data = NULL;
+	}
 
 	return data;
 }
@@ -396,8 +400,6 @@
 		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);
 




More information about the asterisk-commits mailing list