1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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
|