]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
main/features: Use POLLPRI when waiting for events on parked channels.
authorShaun Ruffell <sruffell@digium.com>
Thu, 20 Jan 2011 19:56:34 +0000 (19:56 +0000)
committerShaun Ruffell <sruffell@digium.com>
Thu, 20 Jan 2011 19:56:34 +0000 (19:56 +0000)
This change resolves a regression in the 1.6.2 when converting from
select to poll.  The DAHDI timers use POLLPRI to indicate that the timer
fired, but features was not waiting for that flag.  The result was no
audio for MOH when a call was parked and res_timing_dahdi was in use.

This patch is slightly modified from the one on the mantis issue.  It does
not set an exception on the channel if the POLLPRI flag is set.

(closes issue #18262)
Reported by: francesco_r
Patches:
      patch_park_moh-trunk-2.txt uploaded by cjacobsen (license 1029)
      Tested by: francesco_r, rfrantik, one47

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.2@303106 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/features.c

index af06e9af7a4705d0bda92698056c33c262ec812f..e67c5fbd94b4317b28b9c23d58fb53af5e92360d 100644 (file)
@@ -3489,7 +3489,7 @@ int manage_parkinglot(struct ast_parkinglot *curlot, const struct pollfd *pfds,
                                        continue;
                                }
 
-                               if (!(pfds[y].revents & (POLLIN | POLLERR))) {
+                               if (!(pfds[y].revents & (POLLIN | POLLERR | POLLPRI))) {
                                        /* Next x */
                                        continue;
                                }
@@ -3546,7 +3546,7 @@ std:                      for (x = 0; x < AST_MAX_FDS; x++) {     /* mark fds for next round */
                                                }
                                                *new_pfds = tmp;
                                                (*new_pfds)[*new_nfds].fd = chan->fds[x];
-                                               (*new_pfds)[*new_nfds].events = POLLIN | POLLERR;
+                                               (*new_pfds)[*new_nfds].events = POLLIN | POLLERR | POLLPRI;
                                                (*new_pfds)[*new_nfds].revents = 0;
                                                (*new_nfds)++;
                                        }