summaryrefslogtreecommitdiffstats
path: root/src/modules/module-oss.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/module-oss.c')
-rw-r--r--src/modules/module-oss.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/modules/module-oss.c b/src/modules/module-oss.c
index 965944a7..22b12ef7 100644
--- a/src/modules/module-oss.c
+++ b/src/modules/module-oss.c
@@ -169,10 +169,14 @@ static void do_write(struct userdata *u) {
assert(memchunk->length);
if ((r = pa_iochannel_write(u->io, (uint8_t*) memchunk->memblock->data + memchunk->index, memchunk->length)) < 0) {
- pa_log("write() failed: %s", pa_cstrerror(errno));
- clear_up(u);
- pa_module_unload_request(u->module);
+ if (errno != EAGAIN) {
+ pa_log("write() failed: %s", pa_cstrerror(errno));
+
+ clear_up(u);
+ pa_module_unload_request(u->module);
+ }
+
break;
}
@@ -224,11 +228,14 @@ static void do_read(struct userdata *u) {
assert(memchunk.memblock);
if ((r = pa_iochannel_read(u->io, memchunk.memblock->data, memchunk.memblock->length)) < 0) {
pa_memblock_unref(memchunk.memblock);
+
if (errno != EAGAIN) {
pa_log("read() failed: %s", pa_cstrerror(errno));
+
clear_up(u);
pa_module_unload_request(u->module);
}
+
break;
}