[pulseaudio-commits] [Git][pulseaudio/pulseaudio][master] raop: Fix infinite loop in raop-sink with UDP mode
Arun Raghavan
gitlab at gitlab.freedesktop.org
Sat Aug 17 10:43:25 UTC 2019
Arun Raghavan pushed to branch master at PulseAudio / pulseaudio
Commits:
2e7c0ee8 by RODRIGUEZ Christophe at 2019-08-17T10:43:20Z
raop: Fix infinite loop in raop-sink with UDP mode
There are potentially unresolved issues around the EAGAIN logic, but
this should prevent an infinite loop and log flood in the mean time.
Fixes: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/issues/695
- - - - -
1 changed file:
- src/modules/raop/raop-sink.c
Changes:
=====================================
src/modules/raop/raop-sink.c
=====================================
@@ -388,6 +388,10 @@ static void thread_func(void *userdata) {
ssize_t read;
for (i = 0; i < nbfds; i++) {
+ if (pollfd->revents & POLLERR) {
+ /* one of UDP fds is in faulty state, may have been disconnected, this is fatal */
+ goto fail;
+ }
if (pollfd->revents & pollfd->events) {
pollfd->revents = 0;
read = pa_read(pollfd->fd, packet, sizeof(packet), NULL);
@@ -431,7 +435,7 @@ static void thread_func(void *userdata) {
/* Just try again. */
pa_log_debug("Failed to write data to FIFO (EINTR), retrying");
goto fail;
- } else if (errno != EAGAIN) {
+ } else if (errno != EAGAIN && !u->oob) {
/* Buffer is full, wait for POLLOUT. */
pollfd->events = POLLOUT;
pollfd->revents = 0;
View it on GitLab: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/commit/2e7c0ee8f802bf5fbd457bd73c28816d54c29c7d
--
View it on GitLab: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/commit/2e7c0ee8f802bf5fbd457bd73c28816d54c29c7d
You're receiving this email because of your account on gitlab.freedesktop.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/pulseaudio-commits/attachments/20190817/0facbc88/attachment.html>
More information about the pulseaudio-commits
mailing list