]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Merged revisions 198183 via svnmerge from
authorRussell Bryant <russell@russellbryant.com>
Fri, 29 May 2009 22:34:12 +0000 (22:34 +0000)
committerRussell Bryant <russell@russellbryant.com>
Fri, 29 May 2009 22:34:12 +0000 (22:34 +0000)
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: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@198184 65c4cc65-6c06-0410-ace0-fbb531ad65f3

res/res_timing_pthread.c

index 5e3c31364c066f2c37ce00341ded5e736562d823..86ae1bb420fb929a6b626ac4eca7c438a54c8e8d 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];