From 450bc8dad6d8311808634b2d06f5727af84bafb7 Mon Sep 17 00:00:00 2001
From: Olle Johansson <oej@edvina.net>
Date: Mon, 27 Mar 2006 23:13:31 +0000
Subject: [PATCH] Issue #6409 - Make calls to URI without username go to "s"
 extension (imported from 1.2)

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@15375 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 channels/chan_sip.c | 20 ++++++++++++++------
 1 file changed, 14 insertions(+), 6 deletions(-)

diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 0e47c6ecc9..bf236f853b 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -6704,6 +6704,7 @@ static int get_destination(struct sip_pvt *p, struct sip_request *oreq)
 	char tmp[256] = "", *uri, *a;
 	char tmpf[256], *from;
 	struct sip_request *req;
+	char *colon;
 	
 	req = oreq;
 	if (!req)
@@ -6735,20 +6736,27 @@ static int get_destination(struct sip_pvt *p, struct sip_request *oreq)
 		ast_uri_decode(from);
 	}
 
+	/* Skip any options */
+	if ((a = strchr(uri, ';'))) {
+		*a = '\0';
+	}
+
 	/* Get the target domain */
 	if ((a = strchr(uri, '@'))) {
-		char *colon;
 		*a = '\0';
 		a++;
 		colon = strchr(a, ':'); /* Remove :port */
 		if (colon)
 			*colon = '\0';
-		ast_string_field_set(p, domain, a);
-	}
-	/* Skip any options */
-	if ((a = strchr(uri, ';'))) {
-		*a = '\0';
+	} else {	/* No username part */
+		a = uri;
+		uri = "s";	/* Set extension to "s" */
 	}
+	colon = strchr(a, ':'); /* Remove :port */
+	if (colon)
+		*colon = '\0';
+
+	ast_string_field_set(p, domain, a);
 
 	if (!AST_LIST_EMPTY(&domain_list)) {
 		char domain_context[AST_MAX_EXTENSION];
-- 
GitLab