summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornicolas.dufresne@gmail.com <nicolas.dufresne@gmail.com@c587cffe-e639-0410-9787-d7902ae8ed56>2012-10-10 16:14:29 +0000
committernicolas.dufresne@gmail.com <nicolas.dufresne@gmail.com@c587cffe-e639-0410-9787-d7902ae8ed56>2012-10-10 16:14:29 +0000
commit9bf69bf71754a0d74ed4b8e69ecbaeded1f7609e (patch)
tree800dec216eaf87db46d33f580cfa10df207e7f60
parentda6abc27330b160d5b7a4c6e455bbb349a7049db (diff)
downloadlibproxy-9bf69bf71754a0d74ed4b8e69ecbaeded1f7609e.tar.gz
Fix potential infinit loop uppon network error
git-svn-id: http://libproxy.googlecode.com/svn/trunk@854 c587cffe-e639-0410-9787-d7902ae8ed56
-rw-r--r--libproxy/url.cpp7
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;