diff options
author | nicolas.dufresne@gmail.com <nicolas.dufresne@gmail.com@c587cffe-e639-0410-9787-d7902ae8ed56> | 2012-10-10 16:14:29 +0000 |
---|---|---|
committer | nicolas.dufresne@gmail.com <nicolas.dufresne@gmail.com@c587cffe-e639-0410-9787-d7902ae8ed56> | 2012-10-10 16:14:29 +0000 |
commit | c251403bfcc788173bfad09df795b715b506e082 (patch) | |
tree | 800dec216eaf87db46d33f580cfa10df207e7f60 | |
parent | c440553c12836664afd24a24fb3a4d10a2facd2c (diff) | |
download | libproxy-git-c251403bfcc788173bfad09df795b715b506e082.tar.gz |
Fix potential infinit loop uppon network error
-rw-r--r-- | libproxy/url.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/libproxy/url.cpp b/libproxy/url.cpp index dcebcde..5615b4c 100644 --- a/libproxy/url.cpp +++ b/libproxy/url.cpp @@ -480,11 +480,14 @@ char* url::get_pac() { while (recvd != content_length) { int r = recv(sock, buffer + recvd, content_length - recvd, 0); - if (r < 0) break; + if (r < 0) { + recvd = content_length; + break; + } recvd += r; } buffer[content_length] = '\0'; - } while (chunked); + } while (recvd != content_length); if (string(buffer).size() != content_length) { delete buffer; |