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 dwBufferSize;
DWORD dwStatusCode; 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_SendCallback(&lpwhr->hdr, lpwhr->hdr.dwContext,
INTERNET_STATUS_RECEIVING_RESPONSE, NULL, 0); INTERNET_STATUS_RECEIVING_RESPONSE, NULL, 0);
@ -3264,6 +3266,15 @@ BOOL WINAPI HTTP_HttpSendRequestW(LPWININETHTTPREQW lpwhr, LPCWSTR lpszHeaders,
if (lpwhr->dwContentLength == 0) if (lpwhr->dwContentLength == 0)
HTTP_FinishedReading(lpwhr); 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); dwBufferSize = sizeof(dwStatusCode);
if (!HTTP_HttpQueryInfoW(lpwhr,HTTP_QUERY_FLAG_NUMBER|HTTP_QUERY_STATUS_CODE, if (!HTTP_HttpQueryInfoW(lpwhr,HTTP_QUERY_FLAG_NUMBER|HTTP_QUERY_STATUS_CODE,
&dwStatusCode,&dwBufferSize,NULL)) &dwStatusCode,&dwBufferSize,NULL))