diff options
Diffstat (limited to 'net/asterisk16/files/sip_set_auth.diff')
-rw-r--r-- | net/asterisk16/files/sip_set_auth.diff | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/net/asterisk16/files/sip_set_auth.diff b/net/asterisk16/files/sip_set_auth.diff new file mode 100644 index 000000000000..1addc4f48add --- /dev/null +++ b/net/asterisk16/files/sip_set_auth.diff @@ -0,0 +1,45 @@ +--- channels/chan_sip.c.orig 2008-04-29 08:21:05.000000000 -0400 ++++ channels/chan_sip.c 2008-05-28 18:41:48.000000000 -0400 +@@ -15962,6 +15978,9 @@ + char *ext, *host; + char tmp[256]; + char *dest = data; ++ char *secret = NULL; ++ char *md5secret = NULL; ++ char *authname = NULL; + + if (!(p = sip_alloc(NULL, NULL, 0, SIP_INVITE))) { + ast_log(LOG_ERROR, "Unable to build sip pvt data for '%s' (Out of memory or socket error)\n", (char *)data); +@@ -15983,6 +16002,17 @@ + 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) +@@ -16015,6 +16045,14 @@ + ast_string_field_set(p, username, ext); + ast_string_field_free(p, fullcontact); + } ++ 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 |