diff options
author | oej <oej@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-06-26 16:54:22 +0000 |
---|---|---|
committer | oej <oej@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-06-26 16:54:22 +0000 |
commit | e4747d0d1c05c97e56dabb236b0195327b1e8ee2 (patch) | |
tree | 8520fd489514b958dccf79a002b47ddb490ae03a | |
parent | 1ac52156c6b11739cb6cf917f36f9c8115502a15 (diff) |
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/trunk@125385 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r-- | channels/chan_sip.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c index d504712eb..1ac7c6e70 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -4284,6 +4284,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)); @@ -4306,7 +4307,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 @@ -15317,9 +15317,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; |