Fix trunking for fixed addresses
[asterisk/asterisk.git] / channels / chan_iax2.c
index 4a2f44c..ab5f991 100755 (executable)
@@ -3400,6 +3400,10 @@ static int send_trunk(struct iax2_peer *peer)
        /* Search through trunked calls for a match with this peer */
        for (x=TRUNK_CALL_START;x<maxtrunkcall; x++) {
                ast_pthread_mutex_lock(&iaxsl[x]);
        /* Search through trunked calls for a match with this peer */
        for (x=TRUNK_CALL_START;x<maxtrunkcall; x++) {
                ast_pthread_mutex_lock(&iaxsl[x]);
+#if 0
+               if (iaxtrunkdebug)
+                       ast_verbose("Call %d is at %s:%d (%d)\n", x, inet_ntoa(iaxs[x]->addr.sin_addr), ntohs(iaxs[x]->addr.sin_port), iaxs[x]->addr.sin_family);
+#endif
                if (iaxs[x] && iaxs[x]->trunk && iaxs[x]->trunkdatalen && !memcmp(&iaxs[x]->addr, &peer->addr, sizeof(iaxs[x]->addr))) {
                        if (iaxtrunkdebug)
                                ast_verbose(" -- Sending call %d via trunk to %s:%d\n", x, inet_ntoa(iaxs[x]->addr.sin_addr), ntohs(iaxs[x]->addr.sin_port));
                if (iaxs[x] && iaxs[x]->trunk && iaxs[x]->trunkdatalen && !memcmp(&iaxs[x]->addr, &peer->addr, sizeof(iaxs[x]->addr))) {
                        if (iaxtrunkdebug)
                                ast_verbose(" -- Sending call %d via trunk to %s:%d\n", x, inet_ntoa(iaxs[x]->addr.sin_addr), ntohs(iaxs[x]->addr.sin_port));
@@ -3483,7 +3487,7 @@ static int timing_read(int *id, int fd, short events, void *cbdata)
                        processed++;
                        res = send_trunk(peer);
                        if (iaxtrunkdebug)
                        processed++;
                        res = send_trunk(peer);
                        if (iaxtrunkdebug)
-                               ast_verbose("Processed trunk peer '%s' with %d call(s)\n", peer->name, res);
+                               ast_verbose("Processed trunk peer '%s' (%s:%d) with %d call(s)\n", peer->name, inet_ntoa(peer->addr.sin_addr), ntohs(peer->addr.sin_port), res);
                        totalcalls += res;      
                        res = 0;
                }
                        totalcalls += res;      
                        res = 0;
                }
@@ -4749,6 +4753,8 @@ static struct iax2_peer *build_peer(char *name, struct ast_variable *v)
                if (!peer->authmethods)
                        peer->authmethods = IAX_AUTH_MD5 | IAX_AUTH_PLAINTEXT;
                peer->delme = 0;
                if (!peer->authmethods)
                        peer->authmethods = IAX_AUTH_MD5 | IAX_AUTH_PLAINTEXT;
                peer->delme = 0;
+               /* Make sure these are IPv4 addresses */
+               peer->addr.sin_family = AF_INET;
        }
        return peer;
 }
        }
        return peer;
 }