From b97047b4506994080982a587eb1249cd83a701d1 Mon Sep 17 00:00:00 2001 From: Tomohiro IKEDA Date: Sun, 19 Jun 2022 07:05:17 +0900 Subject: [PATCH] pcm: share plugin: return error if socket read or write call fails Fixes: https://github.com/alsa-project/alsa-lib/pull/242 Signed-off-by: Tomohiro IKEDA Signed-off-by: Jaroslav Kysela --- src/pcm/pcm_share.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/pcm/pcm_share.c b/src/pcm/pcm_share.c index 72509491..dc972dd8 100644 --- a/src/pcm/pcm_share.c +++ b/src/pcm/pcm_share.c @@ -205,6 +205,7 @@ static snd_pcm_uframes_t _snd_pcm_share_missing(snd_pcm_t *pcm) snd_pcm_sframes_t hw_avail; snd_pcm_uframes_t missing = INT_MAX; snd_pcm_sframes_t ready_missing; + ssize_t s; // printf("state=%s hw_ptr=%ld appl_ptr=%ld slave appl_ptr=%ld safety=%ld silence=%ld\n", snd_pcm_state_name(share->state), slave->hw_ptr, share->appl_ptr, *slave->pcm->appl_ptr, slave->safety_threshold, slave->silence_frames); switch (share->state) { case SND_PCM_STATE_RUNNING: @@ -290,15 +291,17 @@ static snd_pcm_uframes_t _snd_pcm_share_missing(snd_pcm_t *pcm) char buf[1]; if (pcm->stream == SND_PCM_STREAM_PLAYBACK) { if (ready) - read(share->slave_socket, buf, 1); + s = read(share->slave_socket, buf, 1); else - write(share->client_socket, buf, 1); + s = write(share->client_socket, buf, 1); } else { if (ready) - write(share->slave_socket, buf, 1); + s = write(share->slave_socket, buf, 1); else - read(share->client_socket, buf, 1); + s = read(share->client_socket, buf, 1); } + if (s == -1) + return INT_MAX; share->ready = ready; } if (!running) -- 2.47.1