aboutsummaryrefslogtreecommitdiffstats
path: root/channels/chan_sip.c
diff options
context:
space:
mode:
authormmichelson <mmichelson@f38db490-d61c-443f-a65b-d21fe96a405b>2010-05-25 21:05:54 +0000
committermmichelson <mmichelson@f38db490-d61c-443f-a65b-d21fe96a405b>2010-05-25 21:05:54 +0000
commit0319d5c4d9d245a7711472254a8d1d47a54325b1 (patch)
tree717cf912284959902abbc33c61f51a5bacd6e00b /channels/chan_sip.c
parenta1dc55e35c7cb42c25cec4a007b19e96540d1585 (diff)
Merged revisions 265698 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk ........ r265698 | mmichelson | 2010-05-25 15:59:04 -0500 (Tue, 25 May 2010) | 12 lines Properly use peer's outboundproxy for outbound REGISTERs. The logic used in transmit_register to get the outboundproxy for a peer was flawed since this value would be overridden shortly afterwards when create_addr was called. In addition, this also fixes some logic used when parsing users.conf so that the peer name is placed in the internally-generated register string so that an outboundproxy set in the Asterisk GUI will be used for outbound REGISTERs. ........ git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.2@265699 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels/chan_sip.c')
-rw-r--r--channels/chan_sip.c21
1 files changed, 5 insertions, 16 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index d087ea4e9..c886e4ded 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -11653,23 +11653,12 @@ static int transmit_register(struct sip_registry *r, int sipmethod, const char *
if (p->do_history)
append_history(p, "RegistryInit", "Account: %s@%s", r->username, r->hostname);
- 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() */
- if (peer) {
- unref_peer(peer, "transmit_registration: from find_peer operation");
- }
/* Use port number specified if no SRV record was found */
if (!r->us.sin_port && r->portno)
r->us.sin_port = htons(r->portno);
/* Find address to hostname */
- if (create_addr(p, r->hostname, &r->us, 0)) {
+ if (create_addr(p, S_OR(r->peername, r->hostname), &r->us, 0)) {
/* we have what we hope is a temporary network error,
* probably DNS. We need to reschedule a registration try */
dialog_unlink_all(p, TRUE, TRUE);
@@ -25107,14 +25096,14 @@ static int reload_config(enum channelreloadreason reason)
if (!ast_strlen_zero(username) && !ast_strlen_zero(host)) {
if (!ast_strlen_zero(secret)) {
if (!ast_strlen_zero(authuser)) {
- snprintf(tmp, sizeof(tmp), "%s:%s:%s@%s/%s", username, secret, authuser, host, contact);
+ snprintf(tmp, sizeof(tmp), "%s?%s:%s:%s@%s/%s", cat, username, secret, authuser, host, contact);
} else {
- snprintf(tmp, sizeof(tmp), "%s:%s@%s/%s", username, secret, host, contact);
+ snprintf(tmp, sizeof(tmp), "%s?%s:%s@%s/%s", cat, username, secret, host, contact);
}
} else if (!ast_strlen_zero(authuser)) {
- snprintf(tmp, sizeof(tmp), "%s::%s@%s/%s", username, authuser, host, contact);
+ snprintf(tmp, sizeof(tmp), "%s?%s::%s@%s/%s", cat, username, authuser, host, contact);
} else {
- snprintf(tmp, sizeof(tmp), "%s@%s/%s", username, host, contact);
+ snprintf(tmp, sizeof(tmp), "%s?%s@%s/%s", cat, username, host, contact);
}
if (sip_register(tmp, 0) == 0)
registry_count++;