Client - Fix to possible infinite loop in ReadLine
authorJohn Hodge <[email protected]>
Tue, 14 Jun 2011 15:42:29 +0000 (23:42 +0800)
committerJohn Hodge <[email protected]>
Tue, 14 Jun 2011 15:42:29 +0000 (23:42 +0800)
- If the remote host closes, recv() returns 0, this was not checked
 > Caused 100% CPU on motsugo when un in a backup script

src/client/main.c

index f3ac712..bf22fab 100644 (file)
@@ -2219,7 +2219,7 @@ char *ReadLine(int Socket)
                }
                else {
                        len = recv(Socket, buf+bufPos, BUFSIZ-1-bufPos, 0);
                }
                else {
                        len = recv(Socket, buf+bufPos, BUFSIZ-1-bufPos, 0);
-                       if( len < 0 ) {
+                       if( len <= 0 ) {
                                free(ret);
                                return strdup("599 Client Connection Error\n");
                        }
                                free(ret);
                                return strdup("599 Client Connection Error\n");
                        }

UCC git Repository :: git.ucc.asn.au