summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomohiro IKEDA <rilakkuma.san.xjapan@gmail.com>2022-06-19 07:05:17 +0900
committerJaroslav Kysela <perex@perex.cz>2022-06-27 13:35:44 +0200
commitb97047b4506994080982a587eb1249cd83a701d1 (patch)
treeaa23caa98503f9717edbf2c7114b0324250b5f2e
parent917f4124840ab95324af9fdff05d787c1c677400 (diff)
downloadalsa-lib-b97047b4506994080982a587eb1249cd83a701d1.tar.gz
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 <rilakkuma.san.xjapan@gmail.com> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
-rw-r--r--src/pcm/pcm_share.c11
1 files 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)