]> arthur.barton.de Git - netatalk.git/blobdiff - libatalk/dsi/dsi_stream.c
Mege maste
[netatalk.git] / libatalk / dsi / dsi_stream.c
index 85caa5f59d45387970c6dcbc1c545e04edac24a3..52209850988bf5c7e80749171cb18a5e2914052c 100644 (file)
@@ -178,15 +178,14 @@ ssize_t dsi_stream_write(DSI *dsi, void *data, const size_t length, int mode)
       goto exit;
   }
 
+  dsi->write_count += written;
+
+exit:
   if (setnonblock(dsi->socket, 0) < 0) {
       LOG(log_error, logtype_dsi, "dsi_stream_write: setnonblock: %s", strerror(errno));
       written = -1;
-      goto exit;
   }
 
-  dsi->write_count += written;
-
-exit:
   dsi->in_write--;
   return written;
 }
@@ -303,18 +302,20 @@ size_t dsi_stream_read(DSI *dsi, void *data, const size_t length)
 {
   size_t stored;
   ssize_t len;
-  
+
   stored = 0;
   while (stored < length) {
     len = buf_read(dsi, (u_int8_t *) data + stored, length - stored);
-    if (len == -1 && errno == EINTR)
+    if (len == -1 && errno == EINTR) {
       continue;
-    else if (len > 0)
+    } else if (len > 0) {
       stored += len;
-    else { /* eof or error */
+    else { /* eof or error */
       /* don't log EOF error if it's just after connect (OSX 10.3 probe) */
       if (len || stored || dsi->read_count) {
-          LOG(log_error, logtype_dsi, "dsi_stream_read(%d): %s", len, (len < 0)?strerror(errno):"unexpected EOF");
+          if (! (dsi->flags & DSI_DISCONNECTED))
+              LOG(log_error, logtype_dsi, "dsi_stream_read(fd: %i): len:%d, %s",
+                  dsi->socket, len, (len < 0) ? strerror(errno) : "unexpected EOF");
       }
       break;
     }
@@ -358,7 +359,10 @@ static size_t dsi_buffered_stream_read(DSI *dsi, u_int8_t *data, const size_t le
 */
 void dsi_sleep(DSI *dsi, const int state)
 {
-    dsi->asleep = state;
+    if (state)
+        dsi->flags |= DSI_SLEEPING;
+    else
+        dsi->flags &= ~DSI_SLEEPING;
 }
 
 /* ---------------------------------------