]> arthur.barton.de Git - netatalk.git/blobdiff - libatalk/util/socket.c
Merge from branch-2-1
[netatalk.git] / libatalk / util / socket.c
index 156593eba75eb9c4c3d2e0f7d3363fbae85c6da2..9afaa3ebe40352163f4c051f71fa8af64e82c972 100644 (file)
@@ -1,5 +1,4 @@
 /*
-   $Id: socket.c,v 1.6 2010-01-05 19:05:52 franklahm Exp $
    Copyright (c) 2009 Frank Lahm <franklahm@gmail.com>
 
    This program is free software; you can redistribute it and/or modify
@@ -125,7 +124,7 @@ ssize_t readt(int socket, void *data, const size_t length, int setnonblocking, i
                                 goto exit;
                             }
                             if (now.tv_usec > end.tv_usec) {
-                                tv.tv_usec = 1000 + end.tv_usec - now.tv_usec;
+                                tv.tv_usec = 1000000 + end.tv_usec - now.tv_usec;
                                 tv.tv_sec  = end.tv_sec - now.tv_sec - 1;
                             } else {
                                 tv.tv_usec = end.tv_usec - now.tv_usec;
@@ -158,6 +157,9 @@ exit:
             return -1;
     }
 
+    if (len == -1 && stored == 0)
+        /* last read or select got an error and we haven't got yet anything => return -1*/
+        return -1;
     return stored;
 }