aboutsummaryrefslogtreecommitdiffstats
path: root/channels
diff options
context:
space:
mode:
authoroej <oej@f38db490-d61c-443f-a65b-d21fe96a405b>2008-06-26 17:07:47 +0000
committeroej <oej@f38db490-d61c-443f-a65b-d21fe96a405b>2008-06-26 17:07:47 +0000
commit2ef928725400f948be205405d98d01c00a4f835c (patch)
tree6f23e87b13fd015555093c5458a98c5f426fd15b /channels
parenta1ddd5d70f2afeb898bf219be5660f71afeac15a (diff)
Merged revisions 125385 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk ................ r125385 | oej | 2008-06-26 18:54:22 +0200 (Tor, 26 Jun 2008) | 12 lines Merged revisions 125384 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r125384 | oej | 2008-06-26 18:32:08 +0200 (Tor, 26 Jun 2008) | 3 lines Add support for peer realm based auth (a few missing lines, the rest is well documented but never worked) ........ ................ git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.0@125388 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels')
-rw-r--r--channels/chan_sip.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 05c2f6577..6ae4ae680 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -3988,6 +3988,7 @@ static int create_addr_from_peer(struct sip_pvt *dialog, struct sip_peer *peer)
dialog->allowtransfer = peer->allowtransfer;
dialog->jointnoncodeccapability = dialog->noncodeccapability;
dialog->rtptimeout = peer->rtptimeout;
+ dialog->peerauth = peer->auth;
dialog->maxcallbitrate = peer->maxcallbitrate;
if (ast_strlen_zero(dialog->tohost))
ast_string_field_set(dialog, tohost, ast_inet_ntoa(dialog->sa.sin_addr));
@@ -4008,7 +4009,6 @@ static int create_addr_from_peer(struct sip_pvt *dialog, struct sip_peer *peer)
ast_string_field_set(dialog, fromuser, peer->fromuser);
if (!ast_strlen_zero(peer->language))
ast_string_field_set(dialog, language, peer->language);
-
/* Set timer T1 to RTT for this peer (if known by qualify=) */
/* Minimum is settable or default to 100 ms */
/* If there is a maxms and lastms from a qualify use that over a manual T1
@@ -14127,9 +14127,11 @@ static int build_reply_digest(struct sip_pvt *p, int method, char* digest, int d
snprintf(cnonce, sizeof(cnonce), "%08lx", ast_random());
/* Check if we have separate auth credentials */
- if ((auth = find_realm_authentication(authl, p->realm))) {
- ast_log(LOG_WARNING, "use realm [%s] from peer [%s][%s]\n",
- auth->username, p->peername, p->username);
+ if(!(auth = find_realm_authentication(p->peerauth, p->realm))) /* Start with peer list */
+ auth = find_realm_authentication(authl, p->realm); /* If not, global list */
+
+ if (auth) {
+ ast_log(LOG_DEBUG, "use realm [%s] from peer [%s][%s]\n", auth->username, p->peername, p->username);
username = auth->username;
secret = auth->secret;
md5secret = auth->md5secret;