Handle authenticating *to* realtime peers (bug #5269)
authorMark Spencer <markster@digium.com>
Sun, 25 Sep 2005 19:13:54 +0000 (19:13 +0000)
committerMark Spencer <markster@digium.com>
Sun, 25 Sep 2005 19:13:54 +0000 (19:13 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6648 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_iax2.c

index b540c4f..fd02cb7 100755 (executable)
@@ -5166,6 +5166,15 @@ static int authenticate_reply(struct chan_iax2_pvt *p, struct sockaddr_in *sin,
                        peer = peer->next;
                }
                ast_mutex_unlock(&peerl.lock);
+               if (!peer) {
+                       /* We checked our list and didn't find one.  It's unlikely, but possible, 
+                          that we're trying to authenticate *to* a realtime peer */
+                       if ((peer = realtime_peer(p->peer))) {
+                               res = authenticate(p->challenge, peer->secret,peer->outkey, authmethods, &ied, sin, &p->ecx, &p->dcx);
+                               if (ast_test_flag(peer, IAX_TEMPONLY))
+                                       destroy_peer(peer);
+                       }
+               }
        }
        if (ies->encmethods)
                ast_set_flag(p, IAX_ENCRYPTED | IAX_KEYPOPULATED);