[asterisk-commits] dvossel: trunk r223088 - /trunk/channels/chan_sip.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Fri Oct 9 10:49:35 CDT 2009
Author: dvossel
Date: Fri Oct 9 10:49:30 2009
New Revision: 223088
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=223088
Log:
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)
Modified:
trunk/channels/chan_sip.c
Modified: trunk/channels/chan_sip.c
URL: http://svnview.digium.com/svn/asterisk/trunk/channels/chan_sip.c?view=diff&rev=223088&r1=223087&r2=223088
==============================================================================
--- trunk/channels/chan_sip.c (original)
+++ trunk/channels/chan_sip.c Fri Oct 9 10:49:30 2009
@@ -11796,7 +11796,7 @@
char tmp[80];
char addr[80];
struct sip_pvt *p;
- struct sip_peer *peer;
+ struct sip_peer *peer = NULL;
int res;
/* exit if we are already in process with this registrar ?*/
@@ -11813,7 +11813,7 @@
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, sip_cfg.srvlookup ? transport : NULL);
if (peer) {
- unref_peer(peer, "removing peer ref for dnsmgr_lookup");
+ peer = unref_peer(peer, "removing peer ref for dnsmgr_lookup");
}
}
@@ -11828,8 +11828,6 @@
}
} 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;
@@ -11846,6 +11844,8 @@
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() */
More information about the asterisk-commits
mailing list