[asterisk-commits] file: branch file/gulp_new_invite r395266 - /team/file/gulp_new_invite/res/re...

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Wed Jul 24 11:21:30 CDT 2013


Author: file
Date: Wed Jul 24 11:21:28 2013
New Revision: 395266

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=395266
Log:
Fix a crash when an endpoint sent a CANCEL before it gets a provisional response. (naughty naughty) 

Modified:
    team/file/gulp_new_invite/res/res_sip/sip_distributor.c

Modified: team/file/gulp_new_invite/res/res_sip/sip_distributor.c
URL: http://svnview.digium.com/svn/asterisk/team/file/gulp_new_invite/res/res_sip/sip_distributor.c?view=diff&rev=395266&r1=395265&r2=395266
==============================================================================
--- team/file/gulp_new_invite/res/res_sip/sip_distributor.c (original)
+++ team/file/gulp_new_invite/res/res_sip/sip_distributor.c Wed Jul 24 11:21:28 2013
@@ -99,17 +99,27 @@
 	struct ast_taskprocessor *serializer = NULL;
 	pjsip_rx_data *clone;
 
-	pjsip_rx_data_clone(rdata, 0, &clone);
 	if (dlg) {
 		dist = pjsip_dlg_get_mod_data(dlg, distributor_mod.id);
 		if (dist) {
 			serializer = dist->serializer;
-			clone->endpt_info.mod_data[distributor_mod.id] = dist->endpoint;
 		}
 	}
 
+	if (!pjsip_method_cmp(&rdata->msg_info.msg->line.req.method, &pjsip_cancel_method) && !serializer) {
+		pjsip_endpt_respond_stateless(ast_sip_get_pjsip_endpoint(), rdata, 481, NULL, NULL, NULL);
+		goto end;
+	}
+
+	pjsip_rx_data_clone(rdata, 0, &clone);
+
+	if (dist) {
+		clone->endpt_info.mod_data[distributor_mod.id] = dist->endpoint;
+	}
+
 	ast_sip_push_task(serializer, distribute, clone);
 
+end:
 	if (dlg) {
 		pjsip_dlg_dec_lock(dlg);
 	}




More information about the asterisk-commits mailing list