aboutsummaryrefslogtreecommitdiffstats
path: root/channels
diff options
context:
space:
mode:
authoroej <oej@f38db490-d61c-443f-a65b-d21fe96a405b>2008-01-22 15:25:43 +0000
committeroej <oej@f38db490-d61c-443f-a65b-d21fe96a405b>2008-01-22 15:25:43 +0000
commit983ec85e45dac205da5a730c77b6315eb06932bd (patch)
tree49449a793cbddcdd846a4a97380cec4134c98264 /channels
parent11c99a773ff3515564405fe4a5dde14523046a26 (diff)
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: http://svn.digium.com/svn/asterisk/trunk@99521 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels')
-rw-r--r--channels/chan_sip.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index d037dd586..d2ab62cc8 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