rpcrt4: Accept HTTP idle packets while waiting for the second prepare header.

This commit is contained in:
Hans Leidekker 2013-02-21 10:47:45 +01:00 committed by Alexandre Julliard
parent 612caa5d39
commit 164ddbca8c
1 changed files with 16 additions and 3 deletions

View File

@ -2324,9 +2324,22 @@ static RPC_STATUS rpcrt4_http_prepare_out_pipe(HINTERNET out_request,
if (status != RPC_S_OK) return status; if (status != RPC_S_OK) return status;
TRACE("received (%d) from first prepare header\n", field1); TRACE("received (%d) from first prepare header\n", field1);
status = rpcrt4_http_read_http_packet(out_request, &pkt_from_server, for (;;)
&data_from_server); {
if (status != RPC_S_OK) return status; status = rpcrt4_http_read_http_packet(out_request, &pkt_from_server,
&data_from_server);
if (status != RPC_S_OK) return status;
if (pkt_from_server.http.flags != 0x0001) break;
TRACE("http idle packet, waiting for real packet\n");
HeapFree(GetProcessHeap(), 0, data_from_server);
if (pkt_from_server.http.num_data_items != 0)
{
ERR("HTTP idle packet should have no data items instead of %d\n",
pkt_from_server.http.num_data_items);
return RPC_S_PROTOCOL_ERROR;
}
}
status = RPCRT4_ParseHttpPrepareHeader2(&pkt_from_server, data_from_server, status = RPCRT4_ParseHttpPrepareHeader2(&pkt_from_server, data_from_server,
&field1, flow_control_increment, &field1, flow_control_increment,
&field3); &field3);