]> granicus.if.org Git - curl/commitdiff
sendrecv: treat all negative values from send/recv as errors
authorDaniel Stenberg <daniel@haxx.se>
Fri, 18 Jun 2010 22:18:14 +0000 (00:18 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Fri, 18 Jun 2010 22:18:14 +0000 (00:18 +0200)
For example the libssh2 based functions return other negative
values than -1 to signal errors and it is important that we catch
them properly. Right before this, various failures from libssh2
were treated as negative download amounts which caused havoc.

lib/sendf.c

index 94bcb9c78ace17b897bf7b2ff9c3c8b0e115c59c..b73c22438cdf38fe3f595f5dd88c00b7c425dc75 100644 (file)
@@ -254,8 +254,8 @@ CURLcode Curl_write(struct connectdata *conn,
   bytes_written = conn->send[num](conn, num, mem, len, &curlcode);
 
   *written = bytes_written;
-  if(-1 != bytes_written)
-    /* we completely ignore the curlcode value when -1 is not returned */
+  if(bytes_written >= 0)
+    /* we completely ignore the curlcode value when subzero is not returned */
     return CURLE_OK;
 
   /* handle CURLE_AGAIN or a send failure */
@@ -577,7 +577,7 @@ CURLcode Curl_read(struct connectdata *conn, /* connection data */
   }
 
   nread = conn->recv[num](conn, num, buffertofill, bytesfromsocket, &curlcode);
-  if(nread == -1)
+  if(nread < 0)
     return curlcode;
 
   if(pipelining) {