diff options
author | oej <oej@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-01-22 15:25:43 +0000 |
---|---|---|
committer | oej <oej@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-01-22 15:25:43 +0000 |
commit | 983ec85e45dac205da5a730c77b6315eb06932bd (patch) | |
tree | 49449a793cbddcdd846a4a97380cec4134c98264 /channels | |
parent | 11c99a773ff3515564405fe4a5dde14523046a26 (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.c | 22 |
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 |