Fix timeout adjustment in c528cec4
authorHeiko Schlittermann (HS12-RIPE) <hs@schlittermann.de>
Wed, 12 Aug 2015 22:20:12 +0000 (00:20 +0200)
committerHeiko Schlittermann (HS12-RIPE) <hs@schlittermann.de>
Wed, 12 Aug 2015 22:20:12 +0000 (00:20 +0200)
src/src/ip.c

index 7991a5850f3611e4c5ca2512d2ff834f97244ad6..2d717051e52083ef311a46edd34c77afa6b1e08e 100644 (file)
@@ -455,7 +455,7 @@ time_t start_recv = time(NULL);
 int time_left = timeout;
 int rc;
 
-if (timeout <= 0)
+if (time_left <= 0)
   {
   errno = ETIMEDOUT;
   return FALSE;
@@ -484,8 +484,10 @@ do
   if (rc < 0 && errno == EINTR)
     {
     DEBUG(D_transport) debug_printf("EINTR while waiting for socket data\n");
+
     /* Watch out, 'continue' jumps to the condition, not to the loops top */
-    if (time_left = timeout - (time(NULL) - start_recv)) continue;
+    time_left = timeout - (time(NULL) - start_recv);
+    if (time_left > 0) continue;
     }
 
   if (rc <= 0)