mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-11-01 22:58:47 -04:00
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
This commit is contained in:
parent
27e72814d0
commit
2e7c0ee8f8
1 changed files with 5 additions and 1 deletions
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue