aboutsummaryrefslogtreecommitdiffstats
path: root/res
diff options
context:
space:
mode:
authorrussell <russell@f38db490-d61c-443f-a65b-d21fe96a405b>2009-05-29 22:34:12 +0000
committerrussell <russell@f38db490-d61c-443f-a65b-d21fe96a405b>2009-05-29 22:34:12 +0000
commit5312169f95dcc9776d47b408dd49c6209382841c (patch)
tree0d1b351274df859a030cd6407551a9647ae4454e /res
parent10e1be3284dac3881e85ef6583d58aeb21f8e68a (diff)
Merged revisions 198183 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk ........ r198183 | russell | 2009-05-29 17:33:31 -0500 (Fri, 29 May 2009) | 2 lines Improve handling of trying to ACK too many timer expirations. ........ git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.1@198184 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'res')
-rw-r--r--res/res_timing_pthread.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/res/res_timing_pthread.c b/res/res_timing_pthread.c
index 5e3c31364..86ae1bb42 100644
--- a/res/res_timing_pthread.c
+++ b/res/res_timing_pthread.c
@@ -357,9 +357,21 @@ static int check_timer(struct pthread_timer *timer)
static void read_pipe(struct pthread_timer *timer, unsigned int quantity)
{
int rd_fd = timer->pipe[PIPE_READ];
+ int pending_ticks = timer->pending_ticks;
ast_assert(quantity);
- ast_assert(quantity >= timer->pending_ticks);
+
+ if (timer->continuous && pending_ticks) {
+ pending_ticks--;
+ }
+
+ if (quantity > pending_ticks) {
+ quantity = pending_ticks;
+ }
+
+ if (!quantity) {
+ return;
+ }
do {
unsigned char buf[1024];