From f4fe6744cc1d1934a9ad7de23bb49a4a1f56667c Mon Sep 17 00:00:00 2001
From: Olle Johansson <oej@edvina.net>
Date: Tue, 22 Jan 2008 15:25:43 +0000
Subject: [PATCH] Add authentication options to the SIP dialstring.
 Documentation follows separately

(issue #11587)
Reported by: sobomax
Patches:
      chan_sip.c-trunk.diff uploaded by sobomax (license 359)



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

diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index d037dd586c..d2ab62cc89 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -18716,6 +18716,9 @@ static struct ast_channel *sip_request_call(const char *type, int format, void *
 	char tmp[256];
 	char *dest = data;
 	char *dnid;
+ 	char *secret = NULL;
+ 	char *md5secret = NULL;
+ 	char *authname = NULL;
 	int oldformat = format;
 
 	/* mask request with some set of allowed formats.
@@ -18764,6 +18767,17 @@ static struct ast_channel *sip_request_call(const char *type, int format, void *
 	if (host) {
 		*host++ = '\0';
 		ext = tmp;
+		secret = strchr(ext, ':');
+		if (secret) {
+			*secret++ = '\0';
+			md5secret = strchr(secret, ':');
+			if (md5secret) {
+				*md5secret++ = '\0';
+				authname = strchr(md5secret, ':');
+				if (authname)
+					*authname++ = '\0';
+			}
+		}
 	} else {
 		ext = strchr(tmp, '/');
 		if (ext) 
@@ -18798,6 +18812,14 @@ static struct ast_channel *sip_request_call(const char *type, int format, void *
 		ast_string_field_set(p, username, ext);
 		ast_string_field_set(p, fullcontact, NULL);
 	}
+	if (secret && !ast_strlen_zero(secret))
+		ast_string_field_set(p, peersecret, secret);
+
+	if (md5secret && !ast_strlen_zero(md5secret))
+		ast_string_field_set(p, peermd5secret, md5secret);
+
+	if (authname && !ast_strlen_zero(authname))
+		ast_string_field_set(p, authname, authname);
 #if 0
 	printf("Setting up to call extension '%s' at '%s'\n", ext ? ext : "<none>", host);
 #endif
-- 
GitLab