[asterisk-commits] dvossel: trunk r324302 - /trunk/channels/chan_sip.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Tue Jun 21 10:49:28 CDT 2011


Author: dvossel
Date: Tue Jun 21 10:49:23 2011
New Revision: 324302

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=324302
Log:
Fixes issue with finding correct extension when message context is used.

Modified:
    trunk/channels/chan_sip.c

Modified: trunk/channels/chan_sip.c
URL: http://svnview.digium.com/svn/asterisk/trunk/channels/chan_sip.c?view=diff&rev=324302&r1=324301&r2=324302
==============================================================================
--- trunk/channels/chan_sip.c (original)
+++ trunk/channels/chan_sip.c Tue Jun 21 10:49:23 2011
@@ -16116,6 +16116,15 @@
 		}
 	}
 
+	/* Override the context with the message context _BEFORE_
+	 * getting the destination.  This way we can guarantee the correct
+	 * extension is used in the message context when it is present. */
+	if (!ast_strlen_zero(p->messagecontext)) {
+		ast_string_field_set(p, context, p->messagecontext);
+	} else if (!ast_strlen_zero(sip_cfg.messagecontext)) {
+		ast_string_field_set(p, context, sip_cfg.messagecontext);
+	}
+
 	get_destination(p, NULL, NULL);
 
 	if (!(msg = ast_msg_alloc())) {
@@ -16132,14 +16141,7 @@
 	res = ast_msg_set_to(msg, "%s", to);
 	res |= ast_msg_set_from(msg, "%s", get_in_brackets(from));
 	res |= ast_msg_set_body(msg, "%s", ast_str_buffer(buf));
-
-	if (!ast_strlen_zero(p->messagecontext)) {
-		res |= ast_msg_set_context(msg, "%s", p->messagecontext);
-	} else if (!ast_strlen_zero(sip_cfg.messagecontext)) {
-		res |= ast_msg_set_context(msg, "%s", sip_cfg.messagecontext);
-	} else {
-		res |= ast_msg_set_context(msg, "%s", p->context);
-	}
+	res |= ast_msg_set_context(msg, "%s", p->context);
 
 	if (!ast_strlen_zero(p->peername)) {
 		res |= ast_msg_set_var(msg, "SIP_PEERNAME", p->peername);




More information about the asterisk-commits mailing list