diff -urN main/channel.c main/channel.c --- main/channel.c 2008-09-26 17:32:01.000000000 -0300 +++ main/channel.c 2008-10-01 12:35:47.000000000 -0300 @@ -1779,7 +1779,12 @@ { int oldms = ms; /* -1 if no timeout */ + ast_log(LOG_WARNING, "ast_waitfor|1|%d|trace subclass '-1' %s\n", ms, c->name); /*trace subclass '-1'*/ + ast_waitfor_nandfds(&c, 1, NULL, 0, NULL, NULL, &ms); + + ast_log(LOG_WARNING, "ast_waitfor|2|%d|trace subclass '-1' %s\n", ms, c->name); /*trace subclass '-1'*/ + if ((ms < 0) && (oldms < 0)) ms = 0; return ms; @@ -1788,7 +1793,11 @@ /* XXX never to be called with ms = -1 */ int ast_waitfordigit(struct ast_channel *c, int ms) { - return ast_waitfordigit_full(c, ms, -1, -1); + int msAux = 0; /*trace subclass '-1'*/ + ast_log(LOG_WARNING, "ast_waitfordigit|1|%d|trace subclass '-1' %s\n", ms, c->name); /*trace subclass '-1'*/ + msAux = ast_waitfordigit_full(c, ms, -1, -1); + ast_log(LOG_WARNING, "ast_waitfordigit|2|%d|trace subclass '-1' %s\n", msAux, c->name); /*trace subclass '-1'*/ + return msAux; } int ast_settimeout(struct ast_channel *c, int samples, int (*func)(const void *data), void *data) @@ -1819,6 +1828,8 @@ /* Only look for the end of DTMF, don't bother with the beginning and don't emulate things */ ast_set_flag(c, AST_FLAG_END_DTMF_ONLY); + ast_log(LOG_WARNING, "ast_waitfordigit_full|1|%d|trace subclass '-1' %s\n", ms, c->name); /*trace subclass '-1'*/ + /* Wait for a digit, no more than ms milliseconds total. */ while (ms) { struct ast_channel *rchan; @@ -1826,6 +1837,7 @@ errno = 0; rchan = ast_waitfor_nandfds(&c, 1, &cmdfd, (cmdfd > -1) ? 1 : 0, NULL, &outfd, &ms); + ast_log(LOG_WARNING, "ast_waitfordigit_full|2|%d|trace subclass '-1' %s\n", ms, c->name); /*trace subclass '-1'*/ if (!rchan && outfd < 0 && ms) { if (errno == 0 || errno == EINTR) continue; @@ -1863,6 +1875,7 @@ break; default: ast_log(LOG_WARNING, "Unexpected control subclass '%d'\n", f->subclass); + ast_log(LOG_WARNING, "ast_waitfordigit_full|3|%d|trace subclass '-1' %s\n", ms, c->name); /*trace subclass '-1'*/ break; } break; diff -urN main/file.c main/file.c --- main/file.c 2008-09-26 17:32:01.000000000 -0300 +++ main/file.c 2008-10-01 13:07:22.000000000 -0300 @@ -1131,6 +1131,7 @@ if (ms < 0) ms = 1000; if (cmdfd < 0) { + ast_log(LOG_WARNING, "waitstream_core|1|%d|trace subclass '-1' %s\n", ms, c->name); /*trace subclass '-1'*/ res = ast_waitfor(c, ms); if (res < 0) { ast_log(LOG_WARNING, "Select failed (%s)\n", strerror(errno)); @@ -1139,7 +1140,11 @@ } } else { int outfd; - struct ast_channel *rchan = ast_waitfor_nandfds(&c, 1, &cmdfd, (cmdfd > -1) ? 1 : 0, NULL, &outfd, &ms); + //struct ast_channel *rchan = ast_waitfor_nandfds(&c, 1, &cmdfd, (cmdfd > -1) ? 1 : 0, NULL, &outfd, &ms); /*trace subclass '-1'*/ + struct ast_channel *rchan; /*trace subclass '-1'*/ + ast_log(LOG_WARNING, "waitstream_core|2|%d|trace subclass '-1' %s\n", ms, c->name); /*trace subclass '-1'*/ + rchan = ast_waitfor_nandfds(&c, 1, &cmdfd, (cmdfd > -1) ? 1 : 0, NULL, &outfd, &ms); /*trace subclass '-1'*/ + ast_log(LOG_WARNING, "waitstream_core|3|%d|trace subclass '-1' %s\n", ms, c->name); /*trace subclass '-1'*/ if (!rchan && (outfd < 0) && (ms)) { /* Continue */ if (errno == EINTR) @@ -1202,6 +1207,7 @@ break; default: ast_log(LOG_WARNING, "Unexpected control subclass '%d'\n", fr->subclass); + ast_log(LOG_WARNING, "waitstream_core|4|%d|trace subclass '-1' %s\n", ms, c->name); /*trace subclass '-1'*/ } break; case AST_FRAME_VOICE: @@ -1224,17 +1230,20 @@ int ast_waitstream_fr(struct ast_channel *c, const char *breakon, const char *forward, const char *rewind, int ms) { + ast_log(LOG_WARNING, "ast_waitstream_fr|1|%d|trace subclass '-1' %s\n", ms, c->name); /*trace subclass '-1'*/ return waitstream_core(c, breakon, forward, rewind, ms, -1 /* no audiofd */, -1 /* no cmdfd */, NULL /* no context */); } int ast_waitstream(struct ast_channel *c, const char *breakon) { + ast_log(LOG_WARNING, "ast_waitstream|1|%d|trace subclass '-1' %s\n", 0, c->name); /*trace subclass '-1'*/ return waitstream_core(c, breakon, NULL, NULL, 0, -1, -1, NULL); } int ast_waitstream_full(struct ast_channel *c, const char *breakon, int audiofd, int cmdfd) { + ast_log(LOG_WARNING, "ast_waitstream_full|1|%d|trace subclass '-1' %s\n", 0, c->name); /*trace subclass '-1'*/ return waitstream_core(c, breakon, NULL, NULL, 0, audiofd, cmdfd, NULL /* no context */); } @@ -1243,6 +1252,7 @@ { /* Waitstream, with return in the case of a valid 1 digit extension */ /* in the current or specified context being pressed */ + ast_log(LOG_WARNING, "ast_waitstream_exten|1|%d|trace subclass '-1' %s\n", 0, c->name); /*trace subclass '-1'*/ if (!context) context = c->context; @@ -1262,7 +1272,10 @@ if (!ast_strlen_zero(file)) { res = ast_streamfile(chan, file, language); if (!res) + { /*trace subclass '-1'*/ + ast_log(LOG_WARNING, "ast_stream_and_wait|1|%d|trace subclass '-1' %s\n", 0, chan->name); /*trace subclass '-1'*/ res = ast_waitstream(chan, digits); + } /*trace subclass '-1'*/ } return res; } diff -urN main/pbx.c main/pbx.c --- main/pbx.c 2008-09-26 17:32:01.000000000 -0300 +++ main/pbx.c 2008-10-01 13:06:59.000000000 -0300 @@ -5724,10 +5724,13 @@ break; } if (ast_test_flag(&flags, BACKGROUND_PLAYBACK)) { + ast_log(LOG_WARNING, "pbx_builtin_background|1|%d|trace subclass '-1' %s\n", 0, chan->name); /*trace subclass '-1'*/ res = ast_waitstream(chan, ""); } else if (ast_test_flag(&flags, BACKGROUND_MATCHEXTEN)) { + ast_log(LOG_WARNING, "pbx_builtin_background|2|%d|trace subclass '-1' %s\n", 0, chan->name); /*trace subclass '-1'*/ res = ast_waitstream_exten(chan, args.context); } else { + ast_log(LOG_WARNING, "pbx_builtin_background|3|%d|trace subclass '-1' %s\n", 0, chan->name); /*trace subclass '-1'*/ res = ast_waitstream(chan, AST_DIGIT_ANY); } ast_stopstream(chan); diff -urN res/res_features.c res/res_features.c --- res/res_features.c 2008-09-26 17:32:01.000000000 -0300 +++ res/res_features.c 2008-10-01 13:26:14.000000000 -0300 @@ -853,16 +853,19 @@ } ast_indicate(transferee, AST_CONTROL_UNHOLD); - + + ast_log(LOG_WARNING, "builtin_atxfer|1|%d|trace subclass '-1' %s\n", 100, transferee->name); /*trace subclass '-1'*/ + ast_log(LOG_WARNING, "builtin_atxfer|2|%d|trace subclass '-1' %s\n", 100, newchan->name); /*trace subclass '-1'*/ if ((ast_autoservice_stop(transferee) < 0) || (ast_waitfordigit(transferee, 100) < 0) || (ast_waitfordigit(newchan, 100) < 0) || ast_check_hangup(transferee) || ast_check_hangup(newchan)) { ast_hangup(newchan); + ast_log(LOG_WARNING, "builtin_atxfer|3|%d|trace subclass '-1'\n", 0); /*trace subclass '-1'*/ return -1; } - + ast_log(LOG_WARNING, "builtin_atxfer|4|%d|trace subclass '-1'\n", 0); /*trace subclass '-1'*/ xferchan = ast_channel_alloc(0, AST_STATE_DOWN, 0, 0, "", "", "", 0, "Transfered/%s", transferee->name); if (!xferchan) { ast_hangup(newchan); @@ -1954,8 +1957,12 @@ if (!ast_streamfile(chan, courtesytone, chan->language) && !ast_streamfile(peer, courtesytone, chan->language)) { /*! \todo XXX we would like to wait on both! */ + ast_log(LOG_WARNING, "park_exec|1|%d|trace subclass '-1' %s\n", 0, chan->name); /*trace subclass '-1'*/ res = ast_waitstream(chan, ""); if (res >= 0) + { /*trace subclass '-1'*/ + ast_log(LOG_WARNING, "park_exec|2|%d|trace subclass '-1' %s\n", 0, peer->name); /*trace subclass '-1'*/ + } /*trace subclass '-1'*/ res = ast_waitstream(peer, ""); if (res < 0) error = 1;