Commit ebca23da authored by Zebediah Figura's avatar Zebediah Figura Committed by Alexandre Julliard

http.sys: Fill out unknown verbs.

parent 7a73d01f
...@@ -277,6 +277,9 @@ static NTSTATUS complete_irp(struct connection *conn, IRP *irp) ...@@ -277,6 +277,9 @@ static NTSTATUS complete_irp(struct connection *conn, IRP *irp)
/* First calculate the total buffer size needed for this IRP. */ /* First calculate the total buffer size needed for this IRP. */
if (conn->unk_verb_len)
irp_size += conn->unk_verb_len + 1;
TRACE("Need %u bytes, have %u.\n", irp_size, output_len); TRACE("Need %u bytes, have %u.\n", irp_size, output_len);
irp->IoStatus.Information = irp_size; irp->IoStatus.Information = irp_size;
...@@ -300,6 +303,7 @@ static NTSTATUS complete_irp(struct connection *conn, IRP *irp) ...@@ -300,6 +303,7 @@ static NTSTATUS complete_irp(struct connection *conn, IRP *irp)
if (params.bits == 32) if (params.bits == 32)
{ {
struct http_request_32 *req = irp->AssociatedIrp.SystemBuffer; struct http_request_32 *req = irp->AssociatedIrp.SystemBuffer;
char *buffer = irp->AssociatedIrp.SystemBuffer;
offset = sizeof(*req); offset = sizeof(*req);
...@@ -307,11 +311,22 @@ static NTSTATUS complete_irp(struct connection *conn, IRP *irp) ...@@ -307,11 +311,22 @@ static NTSTATUS complete_irp(struct connection *conn, IRP *irp)
req->UrlContext = conn->queue->context; req->UrlContext = conn->queue->context;
req->Version = conn->version; req->Version = conn->version;
req->Verb = conn->verb; req->Verb = conn->verb;
req->UnknownVerbLength = conn->unk_verb_len;
if (conn->unk_verb_len)
{
req->pUnknownVerb = params.addr + offset;
memcpy(buffer + offset, conn->buffer, conn->unk_verb_len);
offset += conn->unk_verb_len;
buffer[offset++] = 0;
}
req->BytesReceived = conn->req_len; req->BytesReceived = conn->req_len;
} }
else else
{ {
struct http_request_64 *req = irp->AssociatedIrp.SystemBuffer; struct http_request_64 *req = irp->AssociatedIrp.SystemBuffer;
char *buffer = irp->AssociatedIrp.SystemBuffer;
offset = sizeof(*req); offset = sizeof(*req);
...@@ -319,6 +334,16 @@ static NTSTATUS complete_irp(struct connection *conn, IRP *irp) ...@@ -319,6 +334,16 @@ static NTSTATUS complete_irp(struct connection *conn, IRP *irp)
req->UrlContext = conn->queue->context; req->UrlContext = conn->queue->context;
req->Version = conn->version; req->Version = conn->version;
req->Verb = conn->verb; req->Verb = conn->verb;
req->UnknownVerbLength = conn->unk_verb_len;
if (conn->unk_verb_len)
{
req->pUnknownVerb = params.addr + offset;
memcpy(buffer + offset, conn->buffer, conn->unk_verb_len);
offset += conn->unk_verb_len;
buffer[offset++] = 0;
}
req->BytesReceived = conn->req_len; req->BytesReceived = conn->req_len;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment