diff --git a/lib/http.c b/lib/http.c
index 9fe056c5f9345b48d9086a906921a72a19ab3ab0..54623ec6bc3619b327a97d42e96fa0f2b181d194 100644
--- a/lib/http.c
+++ b/lib/http.c
@@ -226,17 +226,18 @@ int GetLine(int sockfd, char *buf, struct connectdata *conn)
       (nread<BUFSIZE) && read_rc;
       nread++, ptr++) {
     if((CURLE_OK != Curl_read(conn, sockfd, ptr, 1, &nread)) ||
+       (nread <= 0) ||
        (*ptr == '\n'))
       break;
   }
   *ptr=0; /* zero terminate */
-
+  
   if(data->bits.verbose) {
     fputs("< ", data->err);
     fwrite(buf, 1, nread, data->err);
     fputs("\n", data->err);
   }
-  return nread;
+  return nread>0?nread:0;
 }