Fix call timeouts with rtp bridge etc (bug #5252)
[asterisk/asterisk.git] / channels / chan_zap.c
index c8ab247..077eba2 100755 (executable)
@@ -340,7 +340,7 @@ static pthread_t monitor_thread = AST_PTHREADT_NULL;
 
 static int restart_monitor(void);
 
 
 static int restart_monitor(void);
 
-static enum ast_bridge_result zt_bridge(struct ast_channel *c0, struct ast_channel *c1, int flags, struct ast_frame **fo, struct ast_channel **rc);
+static enum ast_bridge_result zt_bridge(struct ast_channel *c0, struct ast_channel *c1, int flags, struct ast_frame **fo, struct ast_channel **rc, int timeoutms);
 
 static int zt_sendtext(struct ast_channel *c, const char *text);
 
 
 static int zt_sendtext(struct ast_channel *c, const char *text);
 
@@ -2940,13 +2940,12 @@ static void enable_dtmf_detect(struct zt_pvt *p)
 #endif         
 }
 
 #endif         
 }
 
-static enum ast_bridge_result zt_bridge(struct ast_channel *c0, struct ast_channel *c1, int flags, struct ast_frame **fo, struct ast_channel **rc)
+static enum ast_bridge_result zt_bridge(struct ast_channel *c0, struct ast_channel *c1, int flags, struct ast_frame **fo, struct ast_channel **rc, int timeoutms)
 {
        struct ast_channel *who;
        struct zt_pvt *p0, *p1, *op0, *op1;
        struct zt_pvt *master = NULL, *slave = NULL;
        struct ast_frame *f;
 {
        struct ast_channel *who;
        struct zt_pvt *p0, *p1, *op0, *op1;
        struct zt_pvt *master = NULL, *slave = NULL;
        struct ast_frame *f;
-       int to;
        int inconf = 0;
        int nothingok = 1;
        int ofd0, ofd1;
        int inconf = 0;
        int nothingok = 1;
        int ofd0, ofd1;
@@ -3169,8 +3168,7 @@ static enum ast_bridge_result zt_bridge(struct ast_channel *c0, struct ast_chann
                }
 #endif
 
                }
 #endif
 
-               to = -1;
-               who = ast_waitfor_n(priority ? c0_priority : c1_priority, 2, &to);
+               who = ast_waitfor_n(priority ? c0_priority : c1_priority, 2, &timeoutms);
                if (!who) {
                        ast_log(LOG_DEBUG, "Ooh, empty read...\n");
                        continue;
                if (!who) {
                        ast_log(LOG_DEBUG, "Ooh, empty read...\n");
                        continue;