aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormmichelson <mmichelson@f38db490-d61c-443f-a65b-d21fe96a405b>2008-08-07 19:54:47 +0000
committermmichelson <mmichelson@f38db490-d61c-443f-a65b-d21fe96a405b>2008-08-07 19:54:47 +0000
commitf795addafa78a0e53d14ea11a6ffac7bad0754cd (patch)
treed21519ecbc18c8f4db6e6c669207635de23b02fa
parentca436cc0b33673f2cc1292ba134354513ef1163c (diff)
Merged revisions 136633 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk ........ r136633 | mmichelson | 2008-08-07 14:54:27 -0500 (Thu, 07 Aug 2008) | 7 lines Fix a calculation error I had made in the poll. The poll would reset to 500 ms every time a non-voice frame was received. The total time we poll should be 500 ms, so now we save the amount of time left after the poll returned and use that as our argument for the next call to poll ........ git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.0@136634 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r--main/channel.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/main/channel.c b/main/channel.c
index cec0e6a15..fdcdc83d4 100644
--- a/main/channel.c
+++ b/main/channel.c
@@ -1694,17 +1694,20 @@ int __ast_answer(struct ast_channel *chan, unsigned int delay)
ast_safe_sleep(chan, delay);
else {
struct ast_frame *f;
+ int ms = ANSWER_WAIT_MS;
while (1) {
/* 500 ms was the original delay here, so now
* we cap our waiting at 500 ms
*/
- res = ast_waitfor(chan, ANSWER_WAIT_MS);
- if (res < 0) {
+ ms = ast_waitfor(chan, ms);
+ if (ms < 0) {
ast_log(LOG_WARNING, "Error condition occurred when polling channel %s for a voice frame: %s\n", chan->name, strerror(errno));
+ res = -1;
break;
}
- if (res == 0) {
+ if (ms == 0) {
ast_debug(2, "Didn't receive a voice frame from %s within %d ms of answering. Continuing anyway\n", chan->name, ANSWER_WAIT_MS);
+ res = 0;
break;
}
f = ast_read(chan);