rpcrt4: Accept HTTP idle packets while waiting for the second prepare header.
Hans Leidekker
hans at codeweavers.com
Thu Feb 21 03:47:45 CST 2013
---
dlls/rpcrt4/rpc_transport.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/dlls/rpcrt4/rpc_transport.c b/dlls/rpcrt4/rpc_transport.c
index 54f0faa..e6b9b4c 100644
--- a/dlls/rpcrt4/rpc_transport.c
+++ b/dlls/rpcrt4/rpc_transport.c
@@ -2324,9 +2324,22 @@ static RPC_STATUS rpcrt4_http_prepare_out_pipe(HINTERNET out_request,
if (status != RPC_S_OK) return status;
TRACE("received (%d) from first prepare header\n", field1);
+again:
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)
+ {
+ 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;
+ }
+ goto again;
+ }
status = RPCRT4_ParseHttpPrepareHeader2(&pkt_from_server, data_from_server,
&field1, flow_control_increment,
&field3);
--
1.7.10.4
More information about the wine-patches
mailing list