Bläddra i källkod

WinINet: Wait until more data is available.

Fixes certain cases where it returns incomplete response on slow internet or when chunked transfer is encountered. Fixes #19.
Miku AuahDark 2 år sedan
förälder
incheckning
1d14277a5d
1 ändrade filer med 4 tillägg och 2 borttagningar
  1. 4 2
      src/windows/WinINetClient.cpp

+ 4 - 2
src/windows/WinINetClient.cpp

@@ -203,12 +203,14 @@ HTTPSClient::Reply WinINetClient::request(const HTTPSClient::Request &req)
 		char buffer[BUFFER_SIZE];
 		char buffer[BUFFER_SIZE];
 		DWORD readed = 0;
 		DWORD readed = 0;
 
 
+		BOOL ret = InternetQueryDataAvailable(hHTTP, &readed, 0, 0);
+		if (!ret || readed == 0)
+			break;
+
 		if (!InternetReadFile(hHTTP, buffer, BUFFER_SIZE, &readed))
 		if (!InternetReadFile(hHTTP, buffer, BUFFER_SIZE, &readed))
 			break;
 			break;
 
 
 		responseData.write(buffer, readed);
 		responseData.write(buffer, readed);
-		if (readed < BUFFER_SIZE)
-			break;
 	}
 	}
 
 
 	reply.body = responseData.str();
 	reply.body = responseData.str();