Index: /branches/lennart/src/pulsecore/protocol-esound.c
===================================================================
--- /branches/lennart/src/pulsecore/protocol-esound.c (revision 1884)
+++ /branches/lennart/src/pulsecore/protocol-esound.c (revision 1964)
@@ -949,5 +949,5 @@
 
         if ((r = pa_iochannel_read(c->io, (uint8_t*) c->read_data + c->read_data_length, handler->data_length - c->read_data_length)) <= 0) {
-            if (errno == EINTR || errno == EAGAIN)
+            if (r < 0 && (errno == EINTR || errno == EAGAIN))
                 return 0;
 
@@ -979,5 +979,5 @@
 
         if (r <= 0) {
-            if (errno == EINTR || errno == EAGAIN)
+            if (r < 0 && (errno == EINTR || errno == EAGAIN))
                 return 0;
 
@@ -1042,5 +1042,5 @@
         if (r <= 0) {
 
-            if (errno == EINTR || errno == EAGAIN)
+            if (r < 0 && (errno == EINTR || errno == EAGAIN))
                 return 0;
 
@@ -1073,5 +1073,5 @@
         if ((r = pa_iochannel_write(c->io, (uint8_t*) c->write_data+c->write_data_index, c->write_data_length-c->write_data_index)) < 0) {
 
-            if (errno == EINTR || errno == EAGAIN)
+            if (r < 0 && (errno == EINTR || errno == EAGAIN))
                 return 0;
 
@@ -1102,5 +1102,5 @@
         if (r < 0) {
 
-            if (errno == EINTR || errno == EAGAIN)
+            if (r < 0 && (errno == EINTR || errno == EAGAIN))
                 return 0;