aboutsummaryrefslogtreecommitdiffstats
path: root/channels
diff options
context:
space:
mode:
authordvossel <dvossel@f38db490-d61c-443f-a65b-d21fe96a405b>2009-10-09 16:00:56 +0000
committerdvossel <dvossel@f38db490-d61c-443f-a65b-d21fe96a405b>2009-10-09 16:00:56 +0000
commit3a3352ab952e7ac90b899ee74f0ea7b55cf72b24 (patch)
tree9562f4a20efa68ad2bebb10b9691084f1d6b94cc /channels
parent2ba8e23333e7a05601d8d2df15a339a2ee376be0 (diff)
Merged revisions 223088 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk ........ r223088 | dvossel | 2009-10-09 10:49:30 -0500 (Fri, 09 Oct 2009) | 14 lines p->peerauth is always empty in transmit_register() When using callbackextension or specifing the peer name in a registration string, the peer's specific auth settings set by the "auth=" strings within the peer definition are not used by the registration. Thanks to ebroad for reporting the issue and providing the patch. (closes issue #15955) Reported by: ebroad Patches: regauthfix.patch uploaded by ebroad (license 878) ........ git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.1@223090 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels')
-rw-r--r--channels/chan_sip.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 3db6e6e6b..6aab11a4b 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -10355,7 +10355,7 @@ static int transmit_register(struct sip_registry *r, int sipmethod, const char *
char tmp[80];
char addr[80];
struct sip_pvt *p;
- struct sip_peer *peer;
+ struct sip_peer *peer = NULL;
int res;
char *fromdomain;
@@ -10373,7 +10373,7 @@ static int transmit_register(struct sip_registry *r, int sipmethod, const char *
snprintf(transport, sizeof(transport), "_sip._%s", get_transport(r->transport)); /* have to use static get_transport function */
ast_dnsmgr_lookup(peer ? peer->tohost : r->hostname, &r->us, &r->dnsmgr, global_srvlookup ? transport : NULL);
if (peer) {
- unref_peer(peer, "removing peer ref for dnsmgr_lookup");
+ peer = unref_peer(peer, "removing peer ref for dnsmgr_lookup");
}
}
@@ -10388,8 +10388,6 @@ static int transmit_register(struct sip_registry *r, int sipmethod, const char *
}
} else {
/* Build callid for registration if we haven't registered before */
- struct sip_peer *peer = NULL;
-
if (!r->callid_valid) {
build_callid_registry(r, internip.sin_addr, default_fromdomain);
r->callid_valid = TRUE;
@@ -10406,6 +10404,8 @@ static int transmit_register(struct sip_registry *r, int sipmethod, const char *
if (!ast_strlen_zero(r->peername)) {
if (!(peer = find_peer(r->peername, NULL, 1, FINDPEERS, FALSE, 0))) {
ast_log(LOG_WARNING, "Could not find peer %s in transmit_register\n", r->peername);
+ } else {
+ p->peerauth = peer->auth;
}
}
ref_proxy(p, obproxy_get(p, peer)); /* it is ok to pass a NULL peer into obproxy_get() */