]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Merged revisions 223088 via svnmerge from
authorDavid Vossel <dvossel@digium.com>
Fri, 9 Oct 2009 16:00:56 +0000 (16:00 +0000)
committerDavid Vossel <dvossel@digium.com>
Fri, 9 Oct 2009 16:00:56 +0000 (16:00 +0000)
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: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@223090 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_sip.c

index 3db6e6e6bf9c546deacc5d32de36b904e0c9b247..6aab11a4b4530cec87937485c905e7dc85b1e6d1 100644 (file)
@@ -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() */