diff --git a/apps/app_mp3.c b/apps/app_mp3.c index aee04795f0..7432d90d07 100755 --- a/apps/app_mp3.c +++ b/apps/app_mp3.c @@ -84,11 +84,10 @@ static int mp3play(char *filename, int fd) static int timed_read(int fd, void *data, int datalen) { int res; - fd_set fds; - struct timeval tv = { 2, 0 }; /* Wait no more than 2 seconds */ - FD_ZERO(&fds); - FD_SET(fd, &fds); - res = ast_select(fd + 1, &fds, NULL, NULL, &tv); + struct pollfd fds[1]; + fds[0].fd = fd; + fds[0].events = POLLIN; + res = poll(fds, 1, 2000); if (res < 1) { ast_log(LOG_NOTICE, "Selected timed out/errored out with %d\n", res); return -1; @@ -146,7 +145,7 @@ static int mp3_exec(struct ast_channel *chan, void *data) res = -1; break; } - if (ms) { + if (ms > 40) { f = ast_read(chan); if (!f) { ast_log(LOG_DEBUG, "Null frame == hangup() detected\n"); @@ -161,6 +160,15 @@ static int mp3_exec(struct ast_channel *chan, void *data) } ast_frfree(f); } else { +#if 0 + { + static struct timeval last; + struct timeval tv; + gettimeofday(&tv, NULL); + printf("Since last: %ld\n", (tv.tv_sec - last.tv_sec) * 1000 + (tv.tv_usec - last.tv_usec) / 1000); + last = tv; + } +#endif res = timed_read(fds[0], myf.frdata, sizeof(myf.frdata)); if (res > 0) { myf.f.frametype = AST_FRAME_VOICE; @@ -182,7 +190,10 @@ static int mp3_exec(struct ast_channel *chan, void *data) res = 0; break; } - ms = res / 16; + ms += res / 16; +#if 0 + printf("Next: %d\n", ms); +#endif } } } diff --git a/apps/app_nbscat.c b/apps/app_nbscat.c index ed5116d7e4..d1b8368527 100755 --- a/apps/app_nbscat.c +++ b/apps/app_nbscat.c @@ -1,7 +1,7 @@ /* * Asterisk -- A telephony toolkit for Linux. * - * Silly application to play an NBScat file -- uses mpg123 + * Silly application to play an NBScat file -- uses nbscat8k * * Copyright (C) 1999, Mark Spencer * @@ -71,11 +71,10 @@ static int NBScatplay(int fd) static int timed_read(int fd, void *data, int datalen) { int res; - fd_set fds; - struct timeval tv = { 2, 0 }; /* Wait no more than 2 seconds */ - FD_ZERO(&fds); - FD_SET(fd, &fds); - res = ast_select(fd + 1, &fds, NULL, NULL, &tv); + struct pollfd fds[1]; + fds[0].fd = fd; + fds[0].events = POLLIN; + res = poll(fds, 1, 2000); if (res < 1) { ast_log(LOG_NOTICE, "Selected timed out/errored out with %d\n", res); return -1; @@ -129,7 +128,7 @@ static int NBScat_exec(struct ast_channel *chan, void *data) res = -1; break; } - if (ms) { + if (ms > 40) { f = ast_read(chan); if (!f) { ast_log(LOG_DEBUG, "Null frame == hangup() detected\n"); @@ -165,7 +164,7 @@ static int NBScat_exec(struct ast_channel *chan, void *data) res = 0; break; } - ms = res / 16; + ms += res / 16; } } } diff --git a/asterisk.c b/asterisk.c index 6566bb7b2a..56dcc0d09a 100755 --- a/asterisk.c +++ b/asterisk.c @@ -40,7 +40,6 @@ #include #include #include -#include #include #include #include diff --git a/channel.c b/channel.c index 38462cea9d..91b81b9fec 100755 --- a/channel.c +++ b/channel.c @@ -594,7 +594,7 @@ int ast_softhangup_nolock(struct ast_channel *chan, int cause) /* Inform channel driver that we need to be hung up, if it cares */ chan->_softhangup |= cause; ast_queue_frame(chan, &f); - /* Interrupt any select call or such */ + /* Interrupt any poll call or such */ if (chan->blocking) pthread_kill(chan->blocker, SIGURG); return res; diff --git a/pbx.c b/pbx.c index abc1de1f0e..01aa0f6c21 100755 --- a/pbx.c +++ b/pbx.c @@ -305,7 +305,7 @@ static struct pbx_builtin { { "SetLanguage", pbx_builtin_setlanguage, "Sets user language", " SetLanguage(language): Set the channel language to 'language'. This\n" -"information is used for the generation of numbers, and to select a natural\n" +"information is used for the generation of numbers, and to choose a natural\n" "language file when available. For example, if language is set to 'fr' and\n" "the file 'demo-congrats' is requested to be played, if the file 'fr/demo-\n" "congrats' exists, then it will play that file, and if not will play the\n" diff --git a/pbx/pbx_wilcalu.c b/pbx/pbx_wilcalu.c index 9fdf642be5..69578c8a04 100755 --- a/pbx/pbx_wilcalu.c +++ b/pbx/pbx_wilcalu.c @@ -61,7 +61,7 @@ static void *autodial(void *ignore) char * sendbufptr=sendbuf; int fd=open(dialfile,O_RDONLY|O_NONBLOCK); int flags = fcntl(fd, F_GETFL); - fd_set fds; + struct pollfd fds[1]; fcntl(fd, F_SETFL, flags & ~O_NONBLOCK); if (option_debug) ast_log(LOG_DEBUG, "Entered Wil-Calu fd=%d\n",fd); @@ -77,9 +77,9 @@ static void *autodial(void *ignore) void *pass; memset(buf,0,257); - FD_ZERO(&fds); - FD_SET(fd, &fds); - ast_select(fd + 1, &fds, NULL, NULL, NULL); + fds[0].fd = fd; + fds[0].events = POLLIN; + poll(fds, 1, -1); bytes=read(fd,buf,256); buf[(int)bytes]=0;