mirror of
https://github.com/reactos/reactos.git
synced 2025-02-21 16:04:57 +00:00
[WINESYNC] Add wininet entry
This commit is contained in:
parent
8cf363feb1
commit
f997acf8e3
6 changed files with 738 additions and 0 deletions
8
sdk/tools/winesync/wininet.cfg
Normal file
8
sdk/tools/winesync/wininet.cfg
Normal file
|
@ -0,0 +1,8 @@
|
|||
directories:
|
||||
dlls/wininet: dll/win32/wininet
|
||||
dlls/wininet/tests: modules/rostests/winetests/wininet
|
||||
files:
|
||||
include/wininet.h: sdk/include/psdk/wininet.h
|
||||
include/winineti.h: sdk/include/psdk/winineti.h
|
||||
tags:
|
||||
wine: wine-4.18
|
|
@ -0,0 +1,145 @@
|
|||
From 915a805cabaec3cc265f4f8ad9f0005502f8fd24 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Fri, 15 May 2015 20:37:19 +0200
|
||||
Subject: [PATCH] wininet/tests: Add more tests for cookies.
|
||||
|
||||
---
|
||||
modules/rostests/winetests/wininet/http.c | 92 +++++++++++++++++++++++++++++++++++++--
|
||||
1 file changed, 89 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/modules/rostests/winetests/wininet/http.c b/modules/rostests/winetests/wininet/http.c
|
||||
index 90a38dc3a..55d51b299 100644
|
||||
--- a/modules/rostests/winetests/wininet/http.c
|
||||
+++ b/modules/rostests/winetests/wininet/http.c
|
||||
@@ -2068,6 +2068,14 @@ static const char largemsg[] =
|
||||
"Content-Length: %I64u\r\n"
|
||||
"\r\n";
|
||||
|
||||
+static const char okmsg_cookie_path[] =
|
||||
+"HTTP/1.1 200 OK\r\n"
|
||||
+"Date: Mon, 01 Dec 2008 13:44:34 GMT\r\n"
|
||||
+"Server: winetest\r\n"
|
||||
+"Content-Length: 0\r\n"
|
||||
+"Set-Cookie: subcookie2=data; path=/test_cookie_set_path\r\n"
|
||||
+"\r\n";
|
||||
+
|
||||
static const char notokmsg[] =
|
||||
"HTTP/1.1 400 Bad Request\r\n"
|
||||
"Server: winetest\r\n"
|
||||
@@ -2438,6 +2446,32 @@ static DWORD CALLBACK server_thread(LPVOID param)
|
||||
else
|
||||
send(c, noauthmsg, sizeof noauthmsg-1, 0);
|
||||
}
|
||||
+ if (strstr(buffer, "/test_cookie_path1"))
|
||||
+ {
|
||||
+ if (strstr(buffer, "subcookie=data"))
|
||||
+ send(c, okmsg, sizeof okmsg-1, 0);
|
||||
+ else
|
||||
+ send(c, notokmsg, sizeof notokmsg-1, 0);
|
||||
+ }
|
||||
+ if (strstr(buffer, "/test_cookie_path2"))
|
||||
+ {
|
||||
+ if (strstr(buffer, "subcookie2=data"))
|
||||
+ send(c, okmsg, sizeof okmsg-1, 0);
|
||||
+ else
|
||||
+ send(c, notokmsg, sizeof notokmsg-1, 0);
|
||||
+ }
|
||||
+ if (strstr(buffer, "/test_cookie_set_path"))
|
||||
+ {
|
||||
+ send(c, okmsg_cookie_path, sizeof okmsg_cookie_path-1, 0);
|
||||
+ }
|
||||
+ if (strstr(buffer, "/test_cookie_merge"))
|
||||
+ {
|
||||
+ if (strstr(buffer, "subcookie=data") &&
|
||||
+ !strstr(buffer, "manual_cookie=test"))
|
||||
+ send(c, okmsg, sizeof okmsg-1, 0);
|
||||
+ else
|
||||
+ send(c, notokmsg, sizeof notokmsg-1, 0);
|
||||
+ }
|
||||
if (strstr(buffer, "/test_host_override"))
|
||||
{
|
||||
if (strstr(buffer, host_header_override))
|
||||
@@ -3816,7 +3850,7 @@ static void test_cookie_header(int port)
|
||||
HINTERNET ses, con, req;
|
||||
DWORD size, error;
|
||||
BOOL ret;
|
||||
- char buffer[64];
|
||||
+ char buffer[256];
|
||||
|
||||
ses = InternetOpenA("winetest", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
|
||||
ok(ses != NULL, "InternetOpen failed\n");
|
||||
@@ -3844,7 +3878,7 @@ static void test_cookie_header(int port)
|
||||
size = sizeof(buffer);
|
||||
ret = HttpQueryInfoA(req, HTTP_QUERY_COOKIE | HTTP_QUERY_FLAG_REQUEST_HEADERS, buffer, &size, NULL);
|
||||
ok(ret, "HttpQueryInfo failed: %u\n", GetLastError());
|
||||
- ok(!strcmp(buffer, "cookie=not biscuit"), "got '%s' expected \'cookie=not biscuit\'\n", buffer);
|
||||
+ ok(!!strstr(buffer, "cookie=not biscuit"), "got '%s' expected \'cookie=not biscuit\'\n", buffer);
|
||||
|
||||
ret = HttpSendRequestA(req, NULL, 0, NULL, 0);
|
||||
ok(ret, "HttpSendRequest failed: %u\n", GetLastError());
|
||||
@@ -3855,9 +3889,61 @@ static void test_cookie_header(int port)
|
||||
size = sizeof(buffer);
|
||||
ret = HttpQueryInfoA(req, HTTP_QUERY_COOKIE | HTTP_QUERY_FLAG_REQUEST_HEADERS, buffer, &size, NULL);
|
||||
ok(ret, "HttpQueryInfo failed: %u\n", GetLastError());
|
||||
- ok(!strcmp(buffer, "cookie=biscuit"), "got '%s' expected \'cookie=biscuit\'\n", buffer);
|
||||
+ ok(!strstr(buffer, "cookie=not biscuit"), "'%s' should not contain \'cookie=not biscuit\'\n", buffer);
|
||||
+ ok(!!strstr(buffer, "cookie=biscuit"), "'%s' should contain \'cookie=biscuit\'\n", buffer);
|
||||
+
|
||||
+ InternetCloseHandle(req);
|
||||
+
|
||||
+ InternetSetCookieA("http://localhost/testCCCC", "subcookie", "data");
|
||||
+
|
||||
+ req = HttpOpenRequestA(con, NULL, "/test_cookie_path1", NULL, NULL, NULL, INTERNET_FLAG_KEEP_CONNECTION, 0);
|
||||
+ ok(req != NULL, "HttpOpenRequest failed\n");
|
||||
+
|
||||
+ ret = HttpSendRequestA(req, NULL, 0, NULL, 0);
|
||||
+ ok(ret, "HttpSendRequest failed\n");
|
||||
+
|
||||
+ test_status_code(req, 200);
|
||||
+ InternetCloseHandle(req);
|
||||
+
|
||||
+ req = HttpOpenRequestA(con, NULL, "/test_cookie_path1/abc", NULL, NULL, NULL, INTERNET_FLAG_KEEP_CONNECTION, 0);
|
||||
+ ok(req != NULL, "HttpOpenRequest failed\n");
|
||||
+
|
||||
+ ret = HttpSendRequestA(req, NULL, 0, NULL, 0);
|
||||
+ ok(ret, "HttpSendRequest failed\n");
|
||||
+
|
||||
+ test_status_code(req, 200);
|
||||
+ InternetCloseHandle(req);
|
||||
+
|
||||
+ req = HttpOpenRequestA(con, NULL, "/test_cookie_set_path", NULL, NULL, NULL, INTERNET_FLAG_KEEP_CONNECTION, 0);
|
||||
+ ok(req != NULL, "HttpOpenRequest failed\n");
|
||||
+
|
||||
+ ret = HttpSendRequestA(req, NULL, 0, NULL, 0);
|
||||
+ ok(ret, "HttpSendRequest failed\n");
|
||||
+
|
||||
+ test_status_code(req, 200);
|
||||
+ InternetCloseHandle(req);
|
||||
+
|
||||
+ req = HttpOpenRequestA(con, NULL, "/test_cookie_path2", NULL, NULL, NULL, INTERNET_FLAG_KEEP_CONNECTION, 0);
|
||||
+ ok(req != NULL, "HttpOpenRequest failed\n");
|
||||
|
||||
+ ret = HttpSendRequestA(req, NULL, 0, NULL, 0);
|
||||
+ ok(ret, "HttpSendRequest failed\n");
|
||||
+
|
||||
+ test_status_code(req, 400);
|
||||
InternetCloseHandle(req);
|
||||
+
|
||||
+ req = HttpOpenRequestA(con, NULL, "/test_cookie_merge", NULL, NULL, NULL, INTERNET_FLAG_KEEP_CONNECTION, 0);
|
||||
+ ok(req != NULL, "HttpOpenRequest failed\n");
|
||||
+
|
||||
+ ret = HttpAddRequestHeadersA(req, "Cookie: manual_cookie=test\r\n", ~0u, HTTP_ADDREQ_FLAG_ADD);
|
||||
+ ok(ret, "HttpAddRequestHeaders failed: %u\n", GetLastError());
|
||||
+
|
||||
+ ret = HttpSendRequestA(req, NULL, 0, NULL, 0);
|
||||
+ ok(ret, "HttpSendRequest failed\n");
|
||||
+
|
||||
+ test_status_code(req, 200);
|
||||
+ InternetCloseHandle(req);
|
||||
+
|
||||
InternetCloseHandle(con);
|
||||
InternetCloseHandle(ses);
|
||||
}
|
||||
--
|
||||
2.23.0
|
||||
|
|
@ -0,0 +1,130 @@
|
|||
From 303a7d54eca11f350f200bf3747646349a84536f Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Fri, 15 May 2015 21:18:37 +0200
|
||||
Subject: [PATCH] wininet/tests: Test auth credential reusage with host
|
||||
override.
|
||||
|
||||
---
|
||||
modules/rostests/winetests/wininet/http.c | 93 +++++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 93 insertions(+)
|
||||
|
||||
diff --git a/modules/rostests/winetests/wininet/http.c b/modules/rostests/winetests/wininet/http.c
|
||||
index b06bd6c04d1..59689baf87e 100644
|
||||
--- a/modules/rostests/winetests/wininet/http.c
|
||||
+++ b/modules/rostests/winetests/wininet/http.c
|
||||
@@ -2496,12 +2496,27 @@ static DWORD CALLBACK server_thread(LPVOID param)
|
||||
{
|
||||
send(c, okmsg, sizeof(okmsg)-1, 0);
|
||||
}
|
||||
+
|
||||
if (strstr(buffer, "HEAD /test_large_content"))
|
||||
{
|
||||
char msg[sizeof(largemsg) + 16];
|
||||
sprintf(msg, largemsg, content_length);
|
||||
send(c, msg, strlen(msg), 0);
|
||||
}
|
||||
+ if (strstr(buffer, "HEAD /test_auth_host1"))
|
||||
+ {
|
||||
+ if (strstr(buffer, "Authorization: Basic dGVzdDE6cGFzcw=="))
|
||||
+ send(c, okmsg, sizeof okmsg-1, 0);
|
||||
+ else
|
||||
+ send(c, noauthmsg, sizeof noauthmsg-1, 0);
|
||||
+ }
|
||||
+ if (strstr(buffer, "HEAD /test_auth_host2"))
|
||||
+ {
|
||||
+ if (strstr(buffer, "Authorization: Basic dGVzdDE6cGFzczI="))
|
||||
+ send(c, okmsg, sizeof okmsg-1, 0);
|
||||
+ else
|
||||
+ send(c, noauthmsg, sizeof noauthmsg-1, 0);
|
||||
+ }
|
||||
shutdown(c, 2);
|
||||
closesocket(c);
|
||||
c = -1;
|
||||
@@ -3200,6 +3215,84 @@ static void test_header_override(int port)
|
||||
InternetCloseHandle(req);
|
||||
InternetCloseHandle(con);
|
||||
InternetCloseHandle(ses);
|
||||
+
|
||||
+ ses = InternetOpenA("winetest", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
|
||||
+ ok(ses != NULL, "InternetOpenA failed\n");
|
||||
+
|
||||
+ con = InternetConnectA(ses, "localhost", port, "test1", "pass", INTERNET_SERVICE_HTTP, 0, 0);
|
||||
+ ok(con != NULL, "InternetConnectA failed %u\n", GetLastError());
|
||||
+
|
||||
+ req = HttpOpenRequestA( con, "HEAD", "/test_auth_host1", NULL, NULL, NULL, 0, 0);
|
||||
+ ok(req != NULL, "HttpOpenRequestA failed %u\n", GetLastError());
|
||||
+
|
||||
+ ret = HttpSendRequestA(req, NULL, 0, NULL, 0);
|
||||
+ ok(ret, "HttpSendRequestA failed %u\n", GetLastError());
|
||||
+
|
||||
+ test_status_code(req, 200);
|
||||
+
|
||||
+ InternetCloseHandle(req);
|
||||
+ InternetCloseHandle(con);
|
||||
+ InternetCloseHandle(ses);
|
||||
+
|
||||
+ ses = InternetOpenA("winetest", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
|
||||
+ ok(ses != NULL, "InternetOpenA failed\n");
|
||||
+
|
||||
+ con = InternetConnectA( ses, "localhost", port, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0);
|
||||
+ ok(con != NULL, "InternetConnectA failed %u\n", GetLastError());
|
||||
+
|
||||
+ req = HttpOpenRequestA(con, "HEAD", "/test_auth_host1", NULL, NULL, NULL, 0, 0);
|
||||
+ ok(req != NULL, "HttpOpenRequestA failed %u\n", GetLastError());
|
||||
+
|
||||
+ ret = HttpAddRequestHeadersA(req, host_header_override, ~0u, HTTP_ADDREQ_FLAG_ADD);
|
||||
+ ok(ret, "HttpAddRequestHeaders failed\n");
|
||||
+
|
||||
+ ret = HttpSendRequestA( req, NULL, 0, NULL, 0 );
|
||||
+ ok( ret, "HttpSendRequestA failed %u\n", GetLastError() );
|
||||
+
|
||||
+ test_status_code(req, 200);
|
||||
+
|
||||
+ InternetCloseHandle(req);
|
||||
+ InternetCloseHandle(con);
|
||||
+ InternetCloseHandle(ses);
|
||||
+
|
||||
+ ses = InternetOpenA("winetest", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
|
||||
+ ok(ses != NULL, "InternetOpenA failed\n");
|
||||
+
|
||||
+ con = InternetConnectA(ses, "localhost", port, "test1", "pass2", INTERNET_SERVICE_HTTP, 0, 0);
|
||||
+ ok(con != NULL, "InternetConnectA failed %u\n", GetLastError());
|
||||
+
|
||||
+ req = HttpOpenRequestA(con, "HEAD", "/test_auth_host2", NULL, NULL, NULL, 0, 0);
|
||||
+ ok(req != NULL, "HttpOpenRequestA failed %u\n", GetLastError());
|
||||
+
|
||||
+ ret = HttpAddRequestHeadersA(req, host_header_override, ~0u, HTTP_ADDREQ_FLAG_ADD);
|
||||
+ ok(ret, "HttpAddRequestHeaders failed\n");
|
||||
+
|
||||
+ ret = HttpSendRequestA(req, NULL, 0, NULL, 0);
|
||||
+ ok(ret, "HttpSendRequestA failed %u\n", GetLastError());
|
||||
+
|
||||
+ test_status_code(req, 200);
|
||||
+
|
||||
+ InternetCloseHandle(req);
|
||||
+ InternetCloseHandle(con);
|
||||
+ InternetCloseHandle(ses);
|
||||
+
|
||||
+ ses = InternetOpenA("winetest", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
|
||||
+ ok(ses != NULL, "InternetOpenA failed\n");
|
||||
+
|
||||
+ con = InternetConnectA(ses, "localhost", port, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0);
|
||||
+ ok(con != NULL, "InternetConnectA failed %u\n", GetLastError());
|
||||
+
|
||||
+ req = HttpOpenRequestA(con, "HEAD", "/test_auth_host2", NULL, NULL, NULL, 0, 0);
|
||||
+ ok(req != NULL, "HttpOpenRequestA failed %u\n", GetLastError());
|
||||
+
|
||||
+ ret = HttpSendRequestA(req, NULL, 0, NULL, 0);
|
||||
+ ok(ret, "HttpSendRequestA failed %u\n", GetLastError());
|
||||
+
|
||||
+ test_status_code(req, 200);
|
||||
+
|
||||
+ InternetCloseHandle(req);
|
||||
+ InternetCloseHandle(con);
|
||||
+ InternetCloseHandle(ses);
|
||||
}
|
||||
|
||||
static void test_connection_closing(int port)
|
||||
--
|
||||
2.17.1
|
||||
|
|
@ -0,0 +1,132 @@
|
|||
From 21ca3efb2a8a1f505f9e3f3ed2126a766d4a127f Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Fri, 15 May 2015 23:09:20 +0200
|
||||
Subject: wininet/tests: Check cookie behaviour when overriding host.
|
||||
|
||||
---
|
||||
modules/rostests/winetests/wininet/http.c | 95 +++++++++++++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 95 insertions(+)
|
||||
|
||||
diff --git a/modules/rostests/winetests/wininet/http.c b/modules/rostests/winetests/wininet/http.c
|
||||
index 546e473..0121aa5 100644
|
||||
--- a/modules/rostests/winetests/wininet/http.c
|
||||
+++ b/modules/rostests/winetests/wininet/http.c
|
||||
@@ -2000,6 +2000,14 @@ static const char okmsg_cookie_path[] =
|
||||
"Set-Cookie: subcookie2=data; path=/test_cookie_set_path\r\n"
|
||||
"\r\n";
|
||||
|
||||
+static const char okmsg_cookie[] =
|
||||
+"HTTP/1.1 200 OK\r\n"
|
||||
+"Date: Mon, 01 Dec 2008 13:44:34 GMT\r\n"
|
||||
+"Server: winetest\r\n"
|
||||
+"Content-Length: 0\r\n"
|
||||
+"Set-Cookie: testcookie=testvalue\r\n"
|
||||
+"\r\n";
|
||||
+
|
||||
static const char notokmsg[] =
|
||||
"HTTP/1.1 400 Bad Request\r\n"
|
||||
"Server: winetest\r\n"
|
||||
@@ -2391,6 +2399,25 @@ static DWORD CALLBACK server_thread(LPVOID param)
|
||||
else
|
||||
send(c, notokmsg, sizeof notokmsg-1, 0);
|
||||
}
|
||||
+ if (strstr(buffer, "/test_cookie_set_host_override"))
|
||||
+ {
|
||||
+ send(c, okmsg_cookie, sizeof okmsg_cookie-1, 0);
|
||||
+ }
|
||||
+ if (strstr(buffer, "/test_cookie_check_host_override"))
|
||||
+ {
|
||||
+ if (strstr(buffer, "Cookie:") && strstr(buffer, "testcookie=testvalue"))
|
||||
+ send(c, okmsg, sizeof okmsg-1, 0);
|
||||
+ else
|
||||
+ send(c, notokmsg, sizeof notokmsg-1, 0);
|
||||
+ }
|
||||
+ if (strstr(buffer, "/test_cookie_check_different_host"))
|
||||
+ {
|
||||
+ if (!strstr(buffer, "foo") &&
|
||||
+ strstr(buffer, "cookie=biscuit"))
|
||||
+ send(c, okmsg, sizeof okmsg-1, 0);
|
||||
+ else
|
||||
+ send(c, notokmsg, sizeof notokmsg-1, 0);
|
||||
+ }
|
||||
if (strstr(buffer, "/test_host_override"))
|
||||
{
|
||||
if (strstr(buffer, host_header_override))
|
||||
@@ -3130,6 +3157,74 @@ static void test_header_override(int port)
|
||||
}
|
||||
|
||||
InternetCloseHandle(req);
|
||||
+ InternetSetCookieA("http://localhost", "cookie", "biscuit");
|
||||
+ req = HttpOpenRequestA(con, NULL, "/testC", NULL, NULL, NULL, INTERNET_FLAG_KEEP_CONNECTION, 0);
|
||||
+ ok(req != NULL, "HttpOpenRequest failed\n");
|
||||
+
|
||||
+ ret = HttpAddRequestHeadersA(req, host_header_override, ~0u, HTTP_ADDREQ_FLAG_ADD);
|
||||
+ ok(ret, "HttpAddRequestHeaders failed\n");
|
||||
+
|
||||
+ ret = HttpSendRequestA(req, NULL, 0, NULL, 0);
|
||||
+ ok(ret, "HttpSendRequest failed\n");
|
||||
+
|
||||
+ test_status_code(req, 200);
|
||||
+
|
||||
+ InternetCloseHandle(req);
|
||||
+ req = HttpOpenRequestA(con, NULL, "/test_cookie_set_host_override", NULL, NULL, NULL, INTERNET_FLAG_KEEP_CONNECTION, 0);
|
||||
+ ok(req != NULL, "HttpOpenRequest failed\n");
|
||||
+
|
||||
+ ret = HttpAddRequestHeadersA(req, host_header_override, ~0u, HTTP_ADDREQ_FLAG_ADD);
|
||||
+ ok(ret, "HttpAddRequestHeaders failed\n");
|
||||
+
|
||||
+ ret = HttpSendRequestA(req, NULL, 0, NULL, 0);
|
||||
+ ok(ret, "HttpSendRequest failed\n");
|
||||
+
|
||||
+ test_status_code(req, 200);
|
||||
+
|
||||
+ InternetCloseHandle(req);
|
||||
+ req = HttpOpenRequestA(con, NULL, "/test_cookie_check_host_override", NULL, NULL, NULL, INTERNET_FLAG_KEEP_CONNECTION, 0);
|
||||
+ ok(req != NULL, "HttpOpenRequest failed\n");
|
||||
+
|
||||
+ ret = HttpAddRequestHeadersA(req, host_header_override, ~0u, HTTP_ADDREQ_FLAG_ADD);
|
||||
+ ok(ret, "HttpAddRequestHeaders failed\n");
|
||||
+
|
||||
+ ret = HttpSendRequestA(req, NULL, 0, NULL, 0);
|
||||
+ ok(ret, "HttpSendRequest failed\n");
|
||||
+
|
||||
+ test_status_code_todo(req, 200);
|
||||
+
|
||||
+ InternetCloseHandle(req);
|
||||
+ req = HttpOpenRequestA(con, NULL, "/test_cookie_check_host_override", NULL, NULL, NULL, INTERNET_FLAG_KEEP_CONNECTION, 0);
|
||||
+ ok(req != NULL, "HttpOpenRequest failed\n");
|
||||
+
|
||||
+ ret = HttpSendRequestA(req, NULL, 0, NULL, 0);
|
||||
+ ok(ret, "HttpSendRequest failed\n");
|
||||
+
|
||||
+ test_status_code_todo(req, 200);
|
||||
+
|
||||
+ InternetCloseHandle(req);
|
||||
+ InternetSetCookieA("http://test.local", "foo", "bar");
|
||||
+ req = HttpOpenRequestA(con, NULL, "/test_cookie_check_different_host", NULL, NULL, NULL, INTERNET_FLAG_KEEP_CONNECTION, 0);
|
||||
+ ok(req != NULL, "HttpOpenRequest failed\n");
|
||||
+
|
||||
+ ret = HttpSendRequestA(req, NULL, 0, NULL, 0);
|
||||
+ ok(ret, "HttpSendRequest failed\n");
|
||||
+
|
||||
+ test_status_code(req, 200);
|
||||
+
|
||||
+ InternetCloseHandle(req);
|
||||
+ req = HttpOpenRequestA(con, NULL, "/test_cookie_check_different_host", NULL, NULL, NULL, INTERNET_FLAG_KEEP_CONNECTION, 0);
|
||||
+ ok(req != NULL, "HttpOpenRequest failed\n");
|
||||
+
|
||||
+ ret = HttpAddRequestHeadersA(req, host_header_override, ~0u, HTTP_ADDREQ_FLAG_ADD);
|
||||
+ ok(ret, "HttpAddRequestHeaders failed\n");
|
||||
+
|
||||
+ ret = HttpSendRequestA(req, NULL, 0, NULL, 0);
|
||||
+ ok(ret, "HttpSendRequest failed\n");
|
||||
+
|
||||
+ test_status_code(req, 200);
|
||||
+
|
||||
+ InternetCloseHandle(req);
|
||||
InternetCloseHandle(con);
|
||||
InternetCloseHandle(ses);
|
||||
|
||||
--
|
||||
2.8.0
|
||||
|
|
@ -0,0 +1,82 @@
|
|||
From a283ad7a863862caf312843950b88bdfd9faeacc Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Sat, 16 May 2015 00:24:35 +0200
|
||||
Subject: wininet: Strip filename if no path is set in cookie.
|
||||
|
||||
The order of the stored cookies doesn't match in /testC, so
|
||||
be a bit less strict in the test.
|
||||
---
|
||||
dll/win32/wininet/http.c | 11 ++++++++++-
|
||||
modules/rostests/winetests/wininet/http.c | 6 +++---
|
||||
2 files changed, 13 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/dll/win32/wininet/http.c b/dll/win32/wininet/http.c
|
||||
index c44156c..7281512 100644
|
||||
--- a/dll/win32/wininet/http.c
|
||||
+++ b/dll/win32/wininet/http.c
|
||||
@@ -764,10 +764,18 @@ static void HTTP_ProcessCookies( http_request_t *request )
|
||||
int HeaderIndex;
|
||||
int numCookies = 0;
|
||||
LPHTTPHEADERW setCookieHeader;
|
||||
+ WCHAR *path, *tmp;
|
||||
|
||||
if(request->hdr.dwFlags & INTERNET_FLAG_NO_COOKIES)
|
||||
return;
|
||||
|
||||
+ path = heap_strdupW(request->path);
|
||||
+ if (!path)
|
||||
+ return;
|
||||
+
|
||||
+ tmp = strrchrW(path, '/');
|
||||
+ if (tmp && tmp[1]) tmp[1] = 0;
|
||||
+
|
||||
EnterCriticalSection( &request->headers_section );
|
||||
|
||||
while((HeaderIndex = HTTP_GetCustomHeaderIndex(request, szSet_Cookie, numCookies++, FALSE)) != -1)
|
||||
@@ -786,10 +794,11 @@ static void HTTP_ProcessCookies( http_request_t *request )
|
||||
|
||||
name = substr(setCookieHeader->lpszValue, data - setCookieHeader->lpszValue);
|
||||
data++;
|
||||
- set_cookie(substrz(request->server->name), substrz(request->path), name, substrz(data), INTERNET_COOKIE_HTTPONLY);
|
||||
+ set_cookie(substrz(request->server->name), substrz(path), name, substrz(data), INTERNET_COOKIE_HTTPONLY);
|
||||
}
|
||||
|
||||
LeaveCriticalSection( &request->headers_section );
|
||||
+ heap_free(path);
|
||||
}
|
||||
|
||||
static void strip_spaces(LPWSTR start)
|
||||
diff --git a/modules/rostests/winetests/wininet/http.c b/modules/rostests/winetests/wininet/http.c
|
||||
index b3826bb..910a0b4 100644
|
||||
--- a/modules/rostests/winetests/wininet/http.c
|
||||
+++ b/modules/rostests/winetests/wininet/http.c
|
||||
@@ -2226,7 +2226,7 @@ static DWORD CALLBACK server_thread(LPVOID param)
|
||||
}
|
||||
if (strstr(buffer, "/testC"))
|
||||
{
|
||||
- if (strstr(buffer, "Cookie: cookie=biscuit"))
|
||||
+ if (strstr(buffer, "cookie=biscuit"))
|
||||
send(c, okmsg, sizeof okmsg-1, 0);
|
||||
else
|
||||
send(c, notokmsg, sizeof notokmsg-1, 0);
|
||||
@@ -3196,7 +3196,7 @@ static void test_header_override(int port)
|
||||
ret = HttpSendRequestA(req, NULL, 0, NULL, 0);
|
||||
ok(ret, "HttpSendRequest failed\n");
|
||||
|
||||
- test_status_code_todo(req, 200);
|
||||
+ test_status_code(req, 200);
|
||||
|
||||
InternetCloseHandle(req);
|
||||
req = HttpOpenRequestA(con, NULL, "/test_cookie_check_host_override", NULL, NULL, NULL, INTERNET_FLAG_KEEP_CONNECTION, 0);
|
||||
@@ -3205,7 +3205,7 @@ static void test_header_override(int port)
|
||||
ret = HttpSendRequestA(req, NULL, 0, NULL, 0);
|
||||
ok(ret, "HttpSendRequest failed\n");
|
||||
|
||||
- test_status_code_todo(req, 200);
|
||||
+ test_status_code(req, 200);
|
||||
|
||||
InternetCloseHandle(req);
|
||||
InternetSetCookieA("http://test.local", "foo", "bar");
|
||||
--
|
||||
2.8.0
|
||||
|
|
@ -0,0 +1,241 @@
|
|||
From 0b022db2f23f61313004bdf0e2e42e9fd9b2f81d Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Sat, 16 May 2015 03:16:15 +0200
|
||||
Subject: wininet: Replacing header fields should fail if they do not exist
|
||||
yet.
|
||||
|
||||
A lot of details are not properly covered by tests yet and were
|
||||
marked with FIXME comments. The implementation was written in such
|
||||
a way that it behaves identical to the old code in such situations.
|
||||
---
|
||||
dll/win32/wininet/http.c | 185 ++++++++++++++++++++++++++--------------------------
|
||||
1 file changed, 93 insertions(+), 92 deletions(-)
|
||||
|
||||
diff --git a/dll/win32/wininet/http.c b/dll/win32/wininet/http.c
|
||||
index 6f01244..5419786 100644
|
||||
--- a/dll/win32/wininet/http.c
|
||||
+++ b/dll/win32/wininet/http.c
|
||||
@@ -6166,127 +6166,128 @@ static LPWSTR * HTTP_InterpretHttpHeader(LPCWSTR buffer)
|
||||
|
||||
static DWORD HTTP_ProcessHeader(http_request_t *request, LPCWSTR field, LPCWSTR value, DWORD dwModifier)
|
||||
{
|
||||
- LPHTTPHEADERW lphttpHdr = NULL;
|
||||
+ LPHTTPHEADERW lphttpHdr;
|
||||
INT index;
|
||||
BOOL request_only = !!(dwModifier & HTTP_ADDHDR_FLAG_REQ);
|
||||
- DWORD res = ERROR_HTTP_INVALID_HEADER;
|
||||
+ DWORD res = ERROR_SUCCESS;
|
||||
|
||||
TRACE("--> %s: %s - 0x%08x\n", debugstr_w(field), debugstr_w(value), dwModifier);
|
||||
|
||||
EnterCriticalSection( &request->headers_section );
|
||||
|
||||
- /* REPLACE wins out over ADD */
|
||||
- if (dwModifier & HTTP_ADDHDR_FLAG_REPLACE)
|
||||
- dwModifier &= ~HTTP_ADDHDR_FLAG_ADD;
|
||||
-
|
||||
- if (dwModifier & HTTP_ADDHDR_FLAG_ADD)
|
||||
- index = -1;
|
||||
- else
|
||||
- index = HTTP_GetCustomHeaderIndex(request, field, 0, request_only);
|
||||
-
|
||||
+ index = HTTP_GetCustomHeaderIndex(request, field, 0, request_only);
|
||||
if (index >= 0)
|
||||
{
|
||||
- if (dwModifier & HTTP_ADDHDR_FLAG_ADD_IF_NEW)
|
||||
- {
|
||||
- LeaveCriticalSection( &request->headers_section );
|
||||
- return ERROR_HTTP_INVALID_HEADER;
|
||||
- }
|
||||
lphttpHdr = &request->custHeaders[index];
|
||||
- }
|
||||
- else if (value)
|
||||
- {
|
||||
- HTTPHEADERW hdr;
|
||||
|
||||
- hdr.lpszField = (LPWSTR)field;
|
||||
- hdr.lpszValue = (LPWSTR)value;
|
||||
- hdr.wFlags = hdr.wCount = 0;
|
||||
+ /* replace existing header if FLAG_REPLACE is given */
|
||||
+ if (dwModifier & HTTP_ADDHDR_FLAG_REPLACE)
|
||||
+ {
|
||||
+ HTTP_DeleteCustomHeader( request, index );
|
||||
|
||||
- if (dwModifier & HTTP_ADDHDR_FLAG_REQ)
|
||||
- hdr.wFlags |= HDR_ISREQUEST;
|
||||
+ if (value && value[0])
|
||||
+ {
|
||||
+ HTTPHEADERW hdr;
|
||||
|
||||
- res = HTTP_InsertCustomHeader(request, &hdr);
|
||||
- LeaveCriticalSection( &request->headers_section );
|
||||
- return res;
|
||||
- }
|
||||
- /* no value to delete */
|
||||
- else
|
||||
- {
|
||||
- LeaveCriticalSection( &request->headers_section );
|
||||
- return ERROR_SUCCESS;
|
||||
- }
|
||||
+ hdr.lpszField = (LPWSTR)field;
|
||||
+ hdr.lpszValue = (LPWSTR)value;
|
||||
+ hdr.wFlags = hdr.wCount = 0;
|
||||
|
||||
- if (dwModifier & HTTP_ADDHDR_FLAG_REQ)
|
||||
- lphttpHdr->wFlags |= HDR_ISREQUEST;
|
||||
- else
|
||||
- lphttpHdr->wFlags &= ~HDR_ISREQUEST;
|
||||
+ if (dwModifier & HTTP_ADDHDR_FLAG_REQ)
|
||||
+ hdr.wFlags |= HDR_ISREQUEST;
|
||||
|
||||
- if (dwModifier & HTTP_ADDHDR_FLAG_REPLACE)
|
||||
- {
|
||||
- HTTP_DeleteCustomHeader( request, index );
|
||||
+ res = HTTP_InsertCustomHeader( request, &hdr );
|
||||
+ }
|
||||
|
||||
- if (value && value[0])
|
||||
+ goto out;
|
||||
+ }
|
||||
+
|
||||
+ /* do not add new header if FLAG_ADD_IF_NEW is set */
|
||||
+ if (dwModifier & HTTP_ADDHDR_FLAG_ADD_IF_NEW)
|
||||
{
|
||||
- HTTPHEADERW hdr;
|
||||
+ res = ERROR_HTTP_INVALID_HEADER; /* FIXME */
|
||||
+ goto out;
|
||||
+ }
|
||||
|
||||
- hdr.lpszField = (LPWSTR)field;
|
||||
- hdr.lpszValue = (LPWSTR)value;
|
||||
- hdr.wFlags = hdr.wCount = 0;
|
||||
+ /* handle appending to existing header */
|
||||
+ if (dwModifier & COALESCEFLAGS)
|
||||
+ {
|
||||
+ LPWSTR lpsztmp;
|
||||
+ WCHAR ch = 0;
|
||||
+ INT len = 0;
|
||||
+ INT origlen = strlenW(lphttpHdr->lpszValue);
|
||||
+ INT valuelen = strlenW(value);
|
||||
|
||||
+ /* FIXME: Should it really clear HDR_ISREQUEST? */
|
||||
if (dwModifier & HTTP_ADDHDR_FLAG_REQ)
|
||||
- hdr.wFlags |= HDR_ISREQUEST;
|
||||
-
|
||||
- res = HTTP_InsertCustomHeader(request, &hdr);
|
||||
- LeaveCriticalSection( &request->headers_section );
|
||||
- return res;
|
||||
- }
|
||||
+ lphttpHdr->wFlags |= HDR_ISREQUEST;
|
||||
+ else
|
||||
+ lphttpHdr->wFlags &= ~HDR_ISREQUEST;
|
||||
|
||||
- LeaveCriticalSection( &request->headers_section );
|
||||
- return ERROR_SUCCESS;
|
||||
- }
|
||||
- else if (dwModifier & COALESCEFLAGS)
|
||||
- {
|
||||
- LPWSTR lpsztmp;
|
||||
- WCHAR ch = 0;
|
||||
- INT len = 0;
|
||||
- INT origlen = strlenW(lphttpHdr->lpszValue);
|
||||
- INT valuelen = strlenW(value);
|
||||
+ if (dwModifier & HTTP_ADDHDR_FLAG_COALESCE_WITH_COMMA)
|
||||
+ {
|
||||
+ ch = ',';
|
||||
+ lphttpHdr->wFlags |= HDR_COMMADELIMITED;
|
||||
+ }
|
||||
+ else if (dwModifier & HTTP_ADDHDR_FLAG_COALESCE_WITH_SEMICOLON)
|
||||
+ {
|
||||
+ ch = ';';
|
||||
+ lphttpHdr->wFlags |= HDR_COMMADELIMITED;
|
||||
+ }
|
||||
|
||||
- if (dwModifier & HTTP_ADDHDR_FLAG_COALESCE_WITH_COMMA)
|
||||
- {
|
||||
- ch = ',';
|
||||
- lphttpHdr->wFlags |= HDR_COMMADELIMITED;
|
||||
- }
|
||||
- else if (dwModifier & HTTP_ADDHDR_FLAG_COALESCE_WITH_SEMICOLON)
|
||||
- {
|
||||
- ch = ';';
|
||||
- lphttpHdr->wFlags |= HDR_COMMADELIMITED;
|
||||
- }
|
||||
+ len = origlen + valuelen + ((ch > 0) ? 2 : 0);
|
||||
|
||||
- len = origlen + valuelen + ((ch > 0) ? 2 : 0);
|
||||
+ lpsztmp = heap_realloc(lphttpHdr->lpszValue, (len+1)*sizeof(WCHAR));
|
||||
+ if (lpsztmp)
|
||||
+ {
|
||||
+ lphttpHdr->lpszValue = lpsztmp;
|
||||
+ /* FIXME: Increment lphttpHdr->wCount. Perhaps lpszValue should be an array */
|
||||
+ if (ch > 0)
|
||||
+ {
|
||||
+ lphttpHdr->lpszValue[origlen] = ch;
|
||||
+ origlen++;
|
||||
+ lphttpHdr->lpszValue[origlen] = ' ';
|
||||
+ origlen++;
|
||||
+ }
|
||||
|
||||
- lpsztmp = heap_realloc(lphttpHdr->lpszValue, (len+1)*sizeof(WCHAR));
|
||||
- if (lpsztmp)
|
||||
- {
|
||||
- lphttpHdr->lpszValue = lpsztmp;
|
||||
- /* FIXME: Increment lphttpHdr->wCount. Perhaps lpszValue should be an array */
|
||||
- if (ch > 0)
|
||||
+ memcpy(&lphttpHdr->lpszValue[origlen], value, valuelen*sizeof(WCHAR));
|
||||
+ lphttpHdr->lpszValue[len] = '\0';
|
||||
+ }
|
||||
+ else
|
||||
{
|
||||
- lphttpHdr->lpszValue[origlen] = ch;
|
||||
- origlen++;
|
||||
- lphttpHdr->lpszValue[origlen] = ' ';
|
||||
- origlen++;
|
||||
+ WARN("heap_realloc (%d bytes) failed\n",len+1);
|
||||
+ res = ERROR_OUTOFMEMORY;
|
||||
}
|
||||
|
||||
- memcpy(&lphttpHdr->lpszValue[origlen], value, valuelen*sizeof(WCHAR));
|
||||
- lphttpHdr->lpszValue[len] = '\0';
|
||||
- res = ERROR_SUCCESS;
|
||||
- }
|
||||
- else
|
||||
- {
|
||||
- WARN("heap_realloc (%d bytes) failed\n",len+1);
|
||||
- res = ERROR_OUTOFMEMORY;
|
||||
+ goto out;
|
||||
}
|
||||
}
|
||||
+
|
||||
+ /* FIXME: What about other combinations? */
|
||||
+ if ((dwModifier & ~HTTP_ADDHDR_FLAG_REQ) == HTTP_ADDHDR_FLAG_REPLACE)
|
||||
+ {
|
||||
+ res = ERROR_HTTP_HEADER_NOT_FOUND;
|
||||
+ goto out;
|
||||
+ }
|
||||
+
|
||||
+ /* FIXME: What if value == ""? */
|
||||
+ if (value)
|
||||
+ {
|
||||
+ HTTPHEADERW hdr;
|
||||
+
|
||||
+ hdr.lpszField = (LPWSTR)field;
|
||||
+ hdr.lpszValue = (LPWSTR)value;
|
||||
+ hdr.wFlags = hdr.wCount = 0;
|
||||
+
|
||||
+ if (dwModifier & HTTP_ADDHDR_FLAG_REQ)
|
||||
+ hdr.wFlags |= HDR_ISREQUEST;
|
||||
+
|
||||
+ res = HTTP_InsertCustomHeader( request, &hdr );
|
||||
+ goto out;
|
||||
+ }
|
||||
+
|
||||
+ /* FIXME: What if value == NULL? */
|
||||
+out:
|
||||
TRACE("<-- %d\n", res);
|
||||
LeaveCriticalSection( &request->headers_section );
|
||||
return res;
|
||||
--
|
||||
2.8.0
|
||||
|
Loading…
Reference in a new issue