wininet: Correct the case where Content-Length is set as well as Transfer-Encoding == chunked.

This commit is contained in:
Aric Stewart 2008-04-17 13:05:41 -05:00 committed by Alexandre Julliard
parent 890c3fd0f6
commit bade2a31a6
1 changed files with 11 additions and 0 deletions

View File

@ -3239,6 +3239,8 @@ BOOL WINAPI HTTP_HttpSendRequestW(LPWININETHTTPREQW lpwhr, LPCWSTR lpszHeaders,
{
DWORD dwBufferSize;
DWORD dwStatusCode;
WCHAR encoding[20];
static const WCHAR szChunked[] = {'c','h','u','n','k','e','d',0};
INTERNET_SendCallback(&lpwhr->hdr, lpwhr->hdr.dwContext,
INTERNET_STATUS_RECEIVING_RESPONSE, NULL, 0);
@ -3264,6 +3266,15 @@ BOOL WINAPI HTTP_HttpSendRequestW(LPWININETHTTPREQW lpwhr, LPCWSTR lpszHeaders,
if (lpwhr->dwContentLength == 0)
HTTP_FinishedReading(lpwhr);
/* Correct the case where both a Content-Length and Transfer-encoding = chuncked are set */
dwBufferSize = sizeof(encoding);
if (HTTP_HttpQueryInfoW(lpwhr, HTTP_QUERY_TRANSFER_ENCODING, encoding, &dwBufferSize, NULL) &&
!strcmpiW(encoding, szChunked))
{
lpwhr->dwContentLength = -1;
}
dwBufferSize = sizeof(dwStatusCode);
if (!HTTP_HttpQueryInfoW(lpwhr,HTTP_QUERY_FLAG_NUMBER|HTTP_QUERY_STATUS_CODE,
&dwStatusCode,&dwBufferSize,NULL))