From 1c6fd962974c65b3849d37dfb4c8975935e8480f Mon Sep 17 00:00:00 2001 From: "nicolas.dufresne@gmail.com" Date: Mon, 15 Oct 2012 20:06:05 +0000 Subject: Fix http chunk encoded PAC This has been broken in previous patch that tried fix an infinit loop that occured uppon truncated content. git-svn-id: http://libproxy.googlecode.com/svn/trunk@859 c587cffe-e639-0410-9787-d7902ae8ed56 --- libproxy/url.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/libproxy/url.cpp b/libproxy/url.cpp index 8d9de0c..a4895d4 100644 --- a/libproxy/url.cpp +++ b/libproxy/url.cpp @@ -460,7 +460,7 @@ char* url::get_pac() { // Get content unsigned int recvd = 0; buffer = new char[PAC_MAX_SIZE]; - *buffer = '\0'; + memset(buffer, 0, PAC_MAX_SIZE); do { unsigned int chunk_length; @@ -480,14 +480,13 @@ char* url::get_pac() { while (recvd != content_length) { int r = recv(sock, buffer + recvd, content_length - recvd, 0); - if (r < 0) { - recvd = content_length; + if (r <= 0) { + chunked = false; break; } recvd += r; } - buffer[content_length] = '\0'; - } while (recvd != content_length); + } while (chunked); if (string(buffer).size() != content_length) { delete[] buffer; -- cgit v1.2.1