Improve handling of trying to ACK too many timer expirations.
authorRussell Bryant <russell@russellbryant.com>
Fri, 29 May 2009 22:33:31 +0000 (22:33 +0000)
committerRussell Bryant <russell@russellbryant.com>
Fri, 29 May 2009 22:33:31 +0000 (22:33 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@198183 65c4cc65-6c06-0410-ace0-fbb531ad65f3

res/res_timing_pthread.c

index 5e3c313..86ae1bb 100644 (file)
@@ -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];