Signed-off-by: Zebediah Figura z.figura12@gmail.com --- include/ntdef.h | 5 +++++ 1 file changed, 5 insertions(+)
diff --git a/include/ntdef.h b/include/ntdef.h index 83ecffd608..014102ac74 100644 --- a/include/ntdef.h +++ b/include/ntdef.h @@ -43,4 +43,9 @@ typedef enum _WAIT_TYPE { } #endif
+#define NT_SUCCESS(status) (((NTSTATUS)(status)) >= 0) +#define NT_INFORMATION(status) ((((NTSTATUS)(status)) & 0xc0000000) == 0x40000000) +#define NT_WARNING(status) ((((NTSTATUS)(status)) & 0xc0000000) == 0x80000000) +#define NT_ERROR(status) ((((NTSTATUS)(status)) & 0xc0000000) == 0xc0000000) + #endif /* _NTDEF_ */
Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/ntoskrnl.exe/ntoskrnl.c | 2 +- dlls/ntoskrnl.exe/tests/ntoskrnl.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c index e2aee3aa68..9fe4223b20 100644 --- a/dlls/ntoskrnl.exe/ntoskrnl.c +++ b/dlls/ntoskrnl.exe/ntoskrnl.c @@ -441,7 +441,7 @@ static NTSTATUS WINAPI dispatch_irp_completion( DEVICE_OBJECT *device, IRP *irp, req->handle = wine_server_obj_handle( irp_handle ); req->status = irp->IoStatus.u.Status; req->size = irp->IoStatus.Information; - if (irp->IoStatus.u.Status >= 0) + if (!NT_ERROR(irp->IoStatus.u.Status)) { if (out_buff) wine_server_add_data( req, out_buff, irp->IoStatus.Information ); } diff --git a/dlls/ntoskrnl.exe/tests/ntoskrnl.c b/dlls/ntoskrnl.exe/tests/ntoskrnl.c index e7a8cc987a..86dce75f29 100644 --- a/dlls/ntoskrnl.exe/tests/ntoskrnl.c +++ b/dlls/ntoskrnl.exe/tests/ntoskrnl.c @@ -444,7 +444,7 @@ static void test_return_status(void) sizeof(status), buffer, sizeof(buffer), &ret_size, NULL); ok(!ret, "ioctl succeeded\n"); ok(GetLastError() == ERROR_MR_MID_NOT_FOUND, "got error %u\n", GetLastError()); - todo_wine ok(!strcmp(buffer, "ghidef"), "got buffer %s\n", buffer); + ok(!strcmp(buffer, "ghidef"), "got buffer %s\n", buffer); ok(ret_size == 3, "got size %u\n", ret_size);
strcpy(buffer, "abcdef");
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=55279
Your paranoid android.
=== w8 (32 bit report) ===
Report errors: The report seems to have been truncated
=== w8 (task log) ===
Task errors: channel 2: open failed: connect failed: Connection refused An error occurred while waiting for the test to complete: the 2784 process does not exist or is not a child process The test VM has crashed, rebooted or lost connectivity (or the TestAgent server died) The previous 2 run(s) terminated abnormally
=== wvistau64 (64 bit report) ===
ntoskrnl.exe: ntoskrnl: Timeout
=== w2008s64 (64 bit report) ===
ntoskrnl.exe: ntoskrnl: Timeout
=== w7pro64 (task log) ===
Task errors: The task timed out
=== w864 (64 bit report) ===
ntoskrnl.exe: ntoskrnl: Timeout
=== w1064v1507 (64 bit report) ===
ntoskrnl.exe: ntoskrnl: Timeout
=== w1064v1809 (64 bit report) ===
ntoskrnl.exe: ntoskrnl: Timeout
=== debian10 (32 bit report) ===
Report errors: ntoskrnl.exe:ntoskrnl contains a misplaced todo message for driver
=== debian10 (32 bit French report) ===
Report errors: ntoskrnl.exe:ntoskrnl contains a misplaced todo message for driver
=== debian10 (32 bit Japanese:Japan report) ===
Report errors: ntoskrnl.exe:ntoskrnl contains a misplaced todo message for driver
=== debian10 (32 bit Chinese:China report) ===
Report errors: ntoskrnl.exe:ntoskrnl contains a misplaced todo message for driver
=== debian10 (32 bit WoW report) ===
Report errors: ntoskrnl.exe:ntoskrnl contains a misplaced todo message for driver
=== debian10 (64 bit WoW report) ===
Report errors: ntoskrnl.exe:ntoskrnl contains a misplaced todo message for driver
Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/httpapi/httpapi.spec | 2 +- dlls/httpapi/httpapi_main.c | 11 ++ include/http.h | 267 +++++++++++++++++++++++++++++++++++- 3 files changed, 276 insertions(+), 4 deletions(-)
diff --git a/dlls/httpapi/httpapi.spec b/dlls/httpapi/httpapi.spec index 1d8fcd81ad..fd5dec9f7b 100644 --- a/dlls/httpapi/httpapi.spec +++ b/dlls/httpapi/httpapi.spec @@ -32,7 +32,7 @@ @ stdcall HttpQueryServiceConfiguration(ptr long ptr long ptr long ptr ptr) @ stub HttpReadFragmentFromCache @ stub HttpReceiveClientCertificate -@ stub HttpReceiveHttpRequest +@ stdcall HttpReceiveHttpRequest(ptr int64 long ptr long ptr ptr) @ stub HttpReceiveHttpResponse @ stub HttpReceiveRequestEntityBody @ stub HttpRemoveAllUrlsFromConfigGroup diff --git a/dlls/httpapi/httpapi_main.c b/dlls/httpapi/httpapi_main.c index a4f20b6bf6..71c63f3c1a 100644 --- a/dlls/httpapi/httpapi_main.c +++ b/dlls/httpapi/httpapi_main.c @@ -182,6 +182,17 @@ ULONG WINAPI HttpAddUrl( HANDLE handle, PCWSTR url, PVOID reserved ) return ERROR_CALL_NOT_IMPLEMENTED; }
+/*********************************************************************** + * HttpReceiveHttpRequest (HTTPAPI.@) + */ +ULONG WINAPI HttpReceiveHttpRequest(HANDLE queue, HTTP_REQUEST_ID id, ULONG flags, + HTTP_REQUEST *request, ULONG size, ULONG *ret_size, OVERLAPPED *ovl) +{ + FIXME("queue %p, id %#I64x, flags %#x, request %p, size %#x, ret_size %p, ovl %p, stub!\n", + queue, id, flags, request, size, ret_size, ovl); + return ERROR_CALL_NOT_IMPLEMENTED; +} + /*********************************************************************** * HttpCreateServerSession (HTTPAPI.@) */ diff --git a/include/http.h b/include/http.h index 8f284a88aa..36acac63fd 100644 --- a/include/http.h +++ b/include/http.h @@ -37,10 +37,16 @@ typedef struct _HTTPAPI_VERSION #define HTTPAPI_VERSION_1 {1,0} #define HTTPAPI_VERSION_2 {2,0}
-/* HttpInitialize and HttpTerminate flags */ #define HTTP_INITIALIZE_SERVER 0x00000001 #define HTTP_INITIALIZE_CONFIG 0x00000002
+#define HTTP_RECEIVE_REQUEST_FLAG_COPY_BODY 0x00000001 +#define HTTP_RECEIVE_REQUEST_FLAG_FLUSH_BODY 0x00000002 + +#define HTTP_REQUEST_FLAG_MORE_ENTITY_BODY_EXISTS 0x00000001 +#define HTTP_REQUEST_FLAG_IP_ROUTED 0x00000002 +#define HTTP_REQUEST_FLAG_HTTP2 0x00000004 + typedef enum _HTTP_SERVICE_CONFIG_ID { HttpServiceConfigIPListenList, @@ -50,19 +56,274 @@ typedef enum _HTTP_SERVICE_CONFIG_ID HttpServiceConfigMax } HTTP_SERVICE_CONFIG_ID, *PHTTP_SERVICE_CONFIG_ID;
+#define HTTP_NULL_ID ((ULONGLONG)0) + typedef ULONGLONG HTTP_OPAQUE_ID, *PHTTP_OPAQUE_ID; +typedef HTTP_OPAQUE_ID HTTP_CONNECTION_ID, *PHTTP_CONNECTION_ID; +typedef HTTP_OPAQUE_ID HTTP_RAW_CONNECTION_ID, *PHTTP_RAW_CONNECTION_ID; +typedef HTTP_OPAQUE_ID HTTP_REQUEST_ID, *PHTTP_REQUEST_ID; typedef HTTP_OPAQUE_ID HTTP_SERVER_SESSION_ID, *PHTTP_SERVER_SESSION_ID; typedef HTTP_OPAQUE_ID HTTP_URL_GROUP_ID, *PHTTP_URL_GROUP_ID; +typedef ULONGLONG HTTP_URL_CONTEXT; + +typedef struct _HTTP_VERSION +{ + USHORT MajorVersion; + USHORT MinorVersion; +} HTTP_VERSION, *PHTTP_VERSION; + +typedef enum _HTTP_VERB +{ + HttpVerbUnparsed = 0, + HttpVerbUnknown, + HttpVerbInvalid, + HttpVerbOPTIONS, + HttpVerbGET, + HttpVerbHEAD, + HttpVerbPOST, + HttpVerbPUT, + HttpVerbDELETE, + HttpVerbTRACE, + HttpVerbCONNECT, + HttpVerbTRACK, + HttpVerbMOVE, + HttpVerbCOPY, + HttpVerbPROPFIND, + HttpVerbPROPPATCH, + HttpVerbMKCOL, + HttpVerbLOCK, + HttpVerbUNLOCK, + HttpVerbSEARCH, + HttpVerbMaximum, +} HTTP_VERB, *PHTTP_VERB; + +typedef struct _HTTP_COOKED_URL +{ + USHORT FullUrlLength; + USHORT HostLength; + USHORT AbsPathLength; + USHORT QueryStringLength; + const WCHAR *pFullUrl; + const WCHAR *pHost; + const WCHAR *pAbsPath; + const WCHAR *pQueryString; +} HTTP_COOKED_URL, *PHTTP_COOKED_URL;
-ULONG WINAPI HttpInitialize(HTTPAPI_VERSION,ULONG,PVOID); -ULONG WINAPI HttpTerminate(ULONG,PVOID); +typedef struct _HTTP_TRANSPORT_ADDRESS +{ + SOCKADDR *pRemoteAddress; + SOCKADDR *pLocalAddress; +} HTTP_TRANSPORT_ADDRESS, *PHTTP_TRANSPORT_ADDRESS; + +typedef struct _HTTP_UNKNOWN_HEADER +{ + USHORT NameLength; + USHORT RawValueLength; + const char *pName; + const char *pRawValue; +} HTTP_UNKNOWN_HEADER, *PHTTP_UNKNOWN_HEADER; + +typedef struct _HTTP_KNOWN_HEADER +{ + USHORT RawValueLength; + const char *pRawValue; +} HTTP_KNOWN_HEADER, *PHTTP_KNOWN_HEADER; + +typedef enum _HTTP_HEADER_ID +{ + HttpHeaderCacheControl = 0, + HttpHeaderConnection = 1, + HttpHeaderDate = 2, + HttpHeaderKeepAlive = 3, + HttpHeaderPragma = 4, + HttpHeaderTrailer = 5, + HttpHeaderTransferEncoding = 6, + HttpHeaderUpgrade = 7, + HttpHeaderVia = 8, + HttpHeaderWarning = 9, + HttpHeaderAllow = 10, + HttpHeaderContentLength = 11, + HttpHeaderContentType = 12, + HttpHeaderContentEncoding = 13, + HttpHeaderContentLanguage = 14, + HttpHeaderContentLocation = 15, + HttpHeaderContentMd5 = 16, + HttpHeaderContentRange = 17, + HttpHeaderExpires = 18, + HttpHeaderLastModified = 19, + + HttpHeaderAccept = 20, + HttpHeaderAcceptCharset = 21, + HttpHeaderAcceptEncoding = 22, + HttpHeaderAcceptLanguage = 23, + HttpHeaderAuthorization = 24, + HttpHeaderCookie = 25, + HttpHeaderExpect = 26, + HttpHeaderFrom = 27, + HttpHeaderHost = 28, + HttpHeaderIfMatch = 29, + HttpHeaderIfModifiedSince = 30, + HttpHeaderIfNoneMatch = 31, + HttpHeaderIfRange = 32, + HttpHeaderIfUnmodifiedSince = 33, + HttpHeaderMaxForwards = 34, + HttpHeaderProxyAuthorization = 35, + HttpHeaderReferer = 36, + HttpHeaderRange = 37, + HttpHeaderTe = 38, + HttpHeaderTranslate = 39, + HttpHeaderUserAgent = 40, + HttpHeaderRequestMaximum = 41, + + HttpHeaderAcceptRanges = 20, + HttpHeaderAge = 21, + HttpHeaderEtag = 22, + HttpHeaderLocation = 23, + HttpHeaderProxyAuthenticate = 24, + HttpHeaderRetryAfter = 25, + HttpHeaderServer = 26, + HttpHeaderSetCookie = 27, + HttpHeaderVary = 28, + HttpHeaderWwwAuthenticate = 29, + HttpHeaderResponseMaximum = 30, + + HttpHeaderMaximum = 41, +} HTTP_HEADER_ID, *PHTTP_HEADER_ID; + +typedef struct _HTTP_REQUEST_HEADERS +{ + USHORT UnknownHeaderCount; + HTTP_UNKNOWN_HEADER *pUnknownHeaders; + USHORT TrailerCount; + HTTP_UNKNOWN_HEADER *pTrailers; + HTTP_KNOWN_HEADER KnownHeaders[HttpHeaderRequestMaximum]; +} HTTP_REQUEST_HEADERS, *PHTTP_REQUEST_HEADERS; + +typedef enum _HTTP_DATA_CHUNK_TYPE +{ + HttpDataChunkFromMemory = 0, + HttpDataChunkFromFileHandle, + HttpDataChunkFromFragmentCache, + HttpDataChunkFromFragmentCacheEx, + HttpDataChunkMaximum, +} HTTP_DATA_CHUNK_TYPE, *PHTTP_DATA_CHUNK_TYPE; + +#define HTTP_BYTE_RANGE_TO_EOF ((ULONGLONG)-1) + +typedef struct _HTTP_BYTE_RANGE +{ + ULARGE_INTEGER StartingOffset; + ULARGE_INTEGER Length; +} HTTP_BYTE_RANGE, *PHTTP_BYTE_RANGE; + +typedef struct _HTTP_DATA_CHUNK +{ + HTTP_DATA_CHUNK_TYPE DataChunkType; + __C89_NAMELESS union + { + struct + { + void *pBuffer; + ULONG BufferLength; + } FromMemory; + struct + { + HTTP_BYTE_RANGE ByteRange; + HANDLE FileHandle; + } FromFileHandle; + struct + { + USHORT FragmentNameLength; + const WCHAR *pFragmentName; + } FromFragmentCache; + } DUMMYUNIONNAME; +} HTTP_DATA_CHUNK, *PHTTP_DATA_CHUNK; + +typedef struct _HTTP_SSL_CLIENT_CERT_INFO +{ + ULONG CertFlags; + ULONG CertEncodedSize; + UCHAR *pCertEncoded; + HANDLE Token; + BOOLEAN CertDeniedByMapper; +} HTTP_SSL_CLIENT_CERT_INFO, *PHTTP_SSL_CLIENT_CERT_INFO; + +typedef struct _HTTP_SSL_INFO +{ + USHORT ServerCertKeySize; + USHORT ConnectionKeySize; + ULONG ServerCertIssuerSize; + ULONG ServerCertSubjectSize; + const char *pServerCertIssuer; + const char *pServerCertSubject; + HTTP_SSL_CLIENT_CERT_INFO *pClientCertInfo; + ULONG SslClientCertNegotiated; +} HTTP_SSL_INFO, *PHTTP_SSL_INFO; + +typedef struct _HTTP_REQUEST_V1 +{ + ULONG Flags; + HTTP_CONNECTION_ID ConnectionId; + HTTP_REQUEST_ID RequestId; + HTTP_URL_CONTEXT UrlContext; + HTTP_VERSION Version; + HTTP_VERB Verb; + USHORT UnknownVerbLength; + USHORT RawUrlLength; + const char *pUnknownVerb; + const char *pRawUrl; + HTTP_COOKED_URL CookedUrl; + HTTP_TRANSPORT_ADDRESS Address; + HTTP_REQUEST_HEADERS Headers; + ULONGLONG BytesReceived; + USHORT EntityChunkCount; + HTTP_DATA_CHUNK *pEntityChunks; + HTTP_RAW_CONNECTION_ID RawConnectionId; + HTTP_SSL_INFO *pSslInfo; +} HTTP_REQUEST_V1; + +typedef enum _HTTP_REQUEST_INFO_TYPE +{ + HttpRequestInfoTypeAuth = 0, +} HTTP_REQUEST_INFO_TYPE, *PHTTP_REQUEST_INFO_TYPE; + +typedef struct _HTTP_REQUEST_INFO +{ + HTTP_REQUEST_INFO_TYPE InfoType; + ULONG InfoLength; + void *pInfo; +} HTTP_REQUEST_INFO, *PHTTP_REQUEST_INFO; + +#ifdef __cplusplus +typedef struct _HTTP_REQUEST_V2 : HTTP_REQUEST_V1 +{ + USHORT RequestInfoCount; + HTTP_REQUEST_INFO *pRequestInfo; +} HTTP_REQUEST_V2, *PHTTP_REQUEST_V2; +#else +typedef struct _HTTP_REQUEST_V2 +{ + __C89_NAMELESS HTTP_REQUEST_V1 DUMMYSTRUCTNAME; + USHORT RequestInfoCount; + HTTP_REQUEST_INFO *pRequestInfo; +} HTTP_REQUEST_V2, *PHTTP_REQUEST_V2; +#endif + +#if (_WIN32_WINNT >= 0x0600) +typedef HTTP_REQUEST_V2 HTTP_REQUEST, *PHTTP_REQUEST; +#else +typedef HTTP_REQUEST_V1 HTTP_REQUEST, *PHTTP_REQUEST; +#endif
ULONG WINAPI HttpAddUrl(HANDLE,PCWSTR,PVOID); ULONG WINAPI HttpCreateHttpHandle(PHANDLE,ULONG); ULONG WINAPI HttpCreateServerSession(HTTPAPI_VERSION,PHTTP_SERVER_SESSION_ID,ULONG); ULONG WINAPI HttpCloseServerSession(HTTP_SERVER_SESSION_ID); ULONG WINAPI HttpDeleteServiceConfiguration(HANDLE,HTTP_SERVICE_CONFIG_ID,PVOID,ULONG,LPOVERLAPPED); +ULONG WINAPI HttpInitialize(HTTPAPI_VERSION version, ULONG flags, void *reserved); +ULONG WINAPI HttpTerminate(ULONG flags, void *reserved); ULONG WINAPI HttpQueryServiceConfiguration(HANDLE,HTTP_SERVICE_CONFIG_ID,PVOID,ULONG,PVOID,ULONG,PULONG,LPOVERLAPPED); +ULONG WINAPI HttpReceiveHttpRequest(HANDLE queue, HTTP_REQUEST_ID id, ULONG flags, HTTP_REQUEST *request, ULONG size, ULONG *ret_size, OVERLAPPED *ovl); ULONG WINAPI HttpSetServiceConfiguration(HANDLE,HTTP_SERVICE_CONFIG_ID,PVOID,ULONG,LPOVERLAPPED);
#ifdef __cplusplus
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=55280
Your paranoid android.
=== debian10 (32 bit report) ===
Report errors: ntoskrnl.exe:ntoskrnl contains a misplaced todo message for driver
=== debian10 (32 bit Chinese:China report) ===
Report errors: ntoskrnl.exe:ntoskrnl contains a misplaced todo message for driver
=== debian10 (32 bit WoW report) ===
Report errors: ntoskrnl.exe:ntoskrnl contains a misplaced todo message for driver
=== debian10 (64 bit WoW report) ===
Report errors: ntoskrnl.exe:ntoskrnl contains a misplaced todo message for driver
Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/httpapi/httpapi.spec | 2 +- dlls/httpapi/httpapi_main.c | 13 ++++++ include/http.h | 89 +++++++++++++++++++++++++++++++++++++ 3 files changed, 103 insertions(+), 1 deletion(-)
diff --git a/dlls/httpapi/httpapi.spec b/dlls/httpapi/httpapi.spec index fd5dec9f7b..98ed29191d 100644 --- a/dlls/httpapi/httpapi.spec +++ b/dlls/httpapi/httpapi.spec @@ -39,7 +39,7 @@ @ stub HttpRemoveUrl @ stub HttpRemoveUrlFromConfigGroup @ stub HttpSendHttpRequest -@ stub HttpSendHttpResponse +@ stdcall HttpSendHttpResponse(ptr int64 long ptr ptr ptr ptr long ptr ptr) @ stub HttpSendRequestEntityBody @ stub HttpSendResponseEntityBody @ stub HttpSetAppPoolInformation diff --git a/dlls/httpapi/httpapi_main.c b/dlls/httpapi/httpapi_main.c index 71c63f3c1a..6babd5aa7a 100644 --- a/dlls/httpapi/httpapi_main.c +++ b/dlls/httpapi/httpapi_main.c @@ -193,6 +193,19 @@ ULONG WINAPI HttpReceiveHttpRequest(HANDLE queue, HTTP_REQUEST_ID id, ULONG flag return ERROR_CALL_NOT_IMPLEMENTED; }
+/*********************************************************************** + * HttpSendHttpResponse (HTTPAPI.@) + */ +ULONG WINAPI HttpSendHttpResponse(HANDLE queue, HTTP_REQUEST_ID id, ULONG flags, + HTTP_RESPONSE *response, HTTP_CACHE_POLICY *cache_policy, ULONG *ret_size, + void *reserved1, ULONG reserved2, OVERLAPPED *ovl, HTTP_LOG_DATA *log_data) +{ + FIXME("queue %p, id %#I64x, flags %#x, response %p, cache_policy %p, " + "ret_size %p, reserved1 %p, reserved2 %#x, ovl %p, log_data %p, stub!\n", + queue, id, flags, response, cache_policy, ret_size, reserved1, reserved2, ovl, log_data); + return ERROR_CALL_NOT_IMPLEMENTED; +} + /*********************************************************************** * HttpCreateServerSession (HTTPAPI.@) */ diff --git a/include/http.h b/include/http.h index 36acac63fd..b7a9558d78 100644 --- a/include/http.h +++ b/include/http.h @@ -47,6 +47,13 @@ typedef struct _HTTPAPI_VERSION #define HTTP_REQUEST_FLAG_IP_ROUTED 0x00000002 #define HTTP_REQUEST_FLAG_HTTP2 0x00000004
+#define HTTP_SEND_RESPONSE_FLAG_DISCONNECT 0x00000001 +#define HTTP_SEND_RESPONSE_FLAG_MORE_DATA 0x00000002 +#define HTTP_SEND_RESPONSE_FLAG_BUFFER_DATA 0x00000004 +#define HTTP_SEND_RESPONSE_FLAG_ENABLE_NAGLING 0x00000008 +#define HTTP_SEND_RESPONSE_FLAG_PROCESS_RANGES 0x00000020 +#define HTTP_SEND_RESPONSE_FLAG_OPAQUE 0x00000040 + typedef enum _HTTP_SERVICE_CONFIG_ID { HttpServiceConfigIPListenList, @@ -315,6 +322,87 @@ typedef HTTP_REQUEST_V2 HTTP_REQUEST, *PHTTP_REQUEST; typedef HTTP_REQUEST_V1 HTTP_REQUEST, *PHTTP_REQUEST; #endif
+typedef struct _HTTP_RESPONSE_HEADERS +{ + USHORT UnknownHeaderCount; + HTTP_UNKNOWN_HEADER *pUnknownHeaders; + USHORT TrailerCount; + HTTP_UNKNOWN_HEADER *pTrailers; + HTTP_KNOWN_HEADER KnownHeaders[HttpHeaderResponseMaximum]; +} HTTP_RESPONSE_HEADERS,*PHTTP_RESPONSE_HEADERS; + +typedef struct _HTTP_RESPONSE_V1 +{ + ULONG Flags; + HTTP_VERSION Version; + USHORT StatusCode; + USHORT ReasonLength; + const char *pReason; + HTTP_RESPONSE_HEADERS Headers; + USHORT EntityChunkCount; + HTTP_DATA_CHUNK *pEntityChunks; +} HTTP_RESPONSE_V1, *PHTTP_RESPONSE_V1; + +typedef enum _HTTP_RESPONSE_INFO_TYPE +{ + HttpResponseInfoTypeMultipleKnownHeaders = 0, + HttpResponseInfoTypeAuthenticationProperty, + HttpResponseInfoTypeQosProperty, + HttpResponseInfoTypeChannelBind, +} HTTP_RESPONSE_INFO_TYPE, *PHTTP_RESPONSE_INFO_TYPE; + +typedef struct _HTTP_RESPONSE_INFO +{ + HTTP_RESPONSE_INFO_TYPE Type; + ULONG Length; + void *pInfo; +} HTTP_RESPONSE_INFO, *PHTTP_RESPONSE_INFO; + +#ifdef __cplusplus +typedef struct _HTTP_RESPONSE_V2 : HTTP_RESPONSE_V1 +{ + USHORT ResponseInfoCount; + HTTP_RESPONSE_INFO *pResponseInfo; +} HTTP_RESPONSE_V2, *PHTTP_RESPONSE_V2; +#else +typedef struct _HTTP_RESPONSE_V2 +{ + __C89_NAMELESS HTTP_RESPONSE_V1 DUMMYSTRUCTNAME; + USHORT ResponseInfoCount; + HTTP_RESPONSE_INFO *pResponseInfo; +} HTTP_RESPONSE_V2, *PHTTP_RESPONSE_V2; +#endif + +#if _WIN32_WINNT >= 0x0600 +typedef HTTP_RESPONSE_V2 HTTP_RESPONSE, *PHTTP_RESPONSE; +#else +typedef HTTP_RESPONSE_V1 HTTP_RESPONSE, *PHTTP_RESPONSE; +#endif + +typedef enum _HTTP_CACHE_POLICY_TYPE +{ + HttpCachePolicyNocache, + HttpCachePolicyUserInvalidates, + HttpCachePolicyTimeToLive, + HttpCachePolicyMaximum, +} HTTP_CACHE_POLICY_TYPE, *PHTTP_CACHE_POLICY_TYPE; + +typedef struct _HTTP_CACHE_POLICY +{ + HTTP_CACHE_POLICY_TYPE Policy; + ULONG SecondsToLive; +} HTTP_CACHE_POLICY, *PHTTP_CACHE_POLICY; + +typedef enum _HTTP_LOG_DATA_TYPE +{ + HttpLogDataTypeFields = 0, +} HTTP_LOG_DATA_TYPE, *PHTTP_LOG_DATA_TYPE; + +typedef struct _HTTP_LOG_DATA +{ + HTTP_LOG_DATA_TYPE Type; +} HTTP_LOG_DATA, *PHTTP_LOG_DATA; + ULONG WINAPI HttpAddUrl(HANDLE,PCWSTR,PVOID); ULONG WINAPI HttpCreateHttpHandle(PHANDLE,ULONG); ULONG WINAPI HttpCreateServerSession(HTTPAPI_VERSION,PHTTP_SERVER_SESSION_ID,ULONG); @@ -324,6 +412,7 @@ ULONG WINAPI HttpInitialize(HTTPAPI_VERSION version, ULONG flags, void *reserved ULONG WINAPI HttpTerminate(ULONG flags, void *reserved); ULONG WINAPI HttpQueryServiceConfiguration(HANDLE,HTTP_SERVICE_CONFIG_ID,PVOID,ULONG,PVOID,ULONG,PULONG,LPOVERLAPPED); ULONG WINAPI HttpReceiveHttpRequest(HANDLE queue, HTTP_REQUEST_ID id, ULONG flags, HTTP_REQUEST *request, ULONG size, ULONG *ret_size, OVERLAPPED *ovl); +ULONG WINAPI HttpSendHttpResponse(HANDLE queue, HTTP_REQUEST_ID id, ULONG flags, HTTP_RESPONSE *response, HTTP_CACHE_POLICY *cache_policy, ULONG *ret_size, void *reserved1, ULONG reserved2, OVERLAPPED *ovl, HTTP_LOG_DATA *log_data); ULONG WINAPI HttpSetServiceConfiguration(HANDLE,HTTP_SERVICE_CONFIG_ID,PVOID,ULONG,LPOVERLAPPED);
#ifdef __cplusplus
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=55281
Your paranoid android.
=== debian10 (32 bit report) ===
Report errors: ntoskrnl.exe:ntoskrnl contains a misplaced todo message for driver
=== debian10 (32 bit Chinese:China report) ===
Report errors: ntoskrnl.exe:ntoskrnl contains a misplaced todo message for driver
=== debian10 (32 bit WoW report) ===
Report errors: ntoskrnl.exe:ntoskrnl contains a misplaced todo message for driver
=== debian10 (64 bit WoW report) ===
Report errors: ntoskrnl.exe:ntoskrnl contains a misplaced todo message for driver
Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/httpapi/httpapi.spec | 2 +- dlls/httpapi/httpapi_main.c | 9 +++++++++ include/http.h | 3 +++ 3 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/dlls/httpapi/httpapi.spec b/dlls/httpapi/httpapi.spec index 98ed29191d..88bc32488a 100644 --- a/dlls/httpapi/httpapi.spec +++ b/dlls/httpapi/httpapi.spec @@ -36,7 +36,7 @@ @ stub HttpReceiveHttpResponse @ stub HttpReceiveRequestEntityBody @ stub HttpRemoveAllUrlsFromConfigGroup -@ stub HttpRemoveUrl +@ stdcall HttpRemoveUrl(ptr wstr) @ stub HttpRemoveUrlFromConfigGroup @ stub HttpSendHttpRequest @ stdcall HttpSendHttpResponse(ptr int64 long ptr ptr ptr ptr long ptr ptr) diff --git a/dlls/httpapi/httpapi_main.c b/dlls/httpapi/httpapi_main.c index 6babd5aa7a..ce112ccc46 100644 --- a/dlls/httpapi/httpapi_main.c +++ b/dlls/httpapi/httpapi_main.c @@ -182,6 +182,15 @@ ULONG WINAPI HttpAddUrl( HANDLE handle, PCWSTR url, PVOID reserved ) return ERROR_CALL_NOT_IMPLEMENTED; }
+/*********************************************************************** + * HttpRemoveUrl (HTTPAPI.@) + */ +ULONG WINAPI HttpRemoveUrl(HANDLE queue, const WCHAR *url) +{ + FIXME("queue %p, url %s, stub!\n", queue, debugstr_w(url)); + return ERROR_CALL_NOT_IMPLEMENTED; +} + /*********************************************************************** * HttpReceiveHttpRequest (HTTPAPI.@) */ diff --git a/include/http.h b/include/http.h index b7a9558d78..eafdf65722 100644 --- a/include/http.h +++ b/include/http.h @@ -54,6 +54,8 @@ typedef struct _HTTPAPI_VERSION #define HTTP_SEND_RESPONSE_FLAG_PROCESS_RANGES 0x00000020 #define HTTP_SEND_RESPONSE_FLAG_OPAQUE 0x00000040
+#define HTTP_URL_FLAG_REMOVE_ALL 0x0000001 + typedef enum _HTTP_SERVICE_CONFIG_ID { HttpServiceConfigIPListenList, @@ -412,6 +414,7 @@ ULONG WINAPI HttpInitialize(HTTPAPI_VERSION version, ULONG flags, void *reserved ULONG WINAPI HttpTerminate(ULONG flags, void *reserved); ULONG WINAPI HttpQueryServiceConfiguration(HANDLE,HTTP_SERVICE_CONFIG_ID,PVOID,ULONG,PVOID,ULONG,PULONG,LPOVERLAPPED); ULONG WINAPI HttpReceiveHttpRequest(HANDLE queue, HTTP_REQUEST_ID id, ULONG flags, HTTP_REQUEST *request, ULONG size, ULONG *ret_size, OVERLAPPED *ovl); +ULONG WINAPI HttpRemoveUrl(HANDLE queue, const WCHAR *url); ULONG WINAPI HttpSendHttpResponse(HANDLE queue, HTTP_REQUEST_ID id, ULONG flags, HTTP_RESPONSE *response, HTTP_CACHE_POLICY *cache_policy, ULONG *ret_size, void *reserved1, ULONG reserved2, OVERLAPPED *ovl, HTTP_LOG_DATA *log_data); ULONG WINAPI HttpSetServiceConfiguration(HANDLE,HTTP_SERVICE_CONFIG_ID,PVOID,ULONG,LPOVERLAPPED);
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=55282
Your paranoid android.
=== debian10 (32 bit report) ===
Report errors: ntoskrnl.exe:ntoskrnl contains a misplaced todo message for driver
=== debian10 (32 bit Chinese:China report) ===
Report errors: ntoskrnl.exe:ntoskrnl contains a misplaced todo message for driver
=== debian10 (32 bit WoW report) ===
Report errors: ntoskrnl.exe:ntoskrnl contains a misplaced todo message for driver
=== debian10 (64 bit WoW report) ===
Report errors: ntoskrnl.exe:ntoskrnl contains a misplaced todo message for driver