Module: wine Branch: master Commit: ce4bdcd0c1f619096631974d101eb4b95978671d URL: http://source.winehq.org/git/wine.git/?a=commit;h=ce4bdcd0c1f619096631974d10...
Author: Jacek Caban jacek@codeweavers.com Date: Tue May 17 19:13:56 2016 +0200
wininet: Rewrite test_accept_encoding using more generic request.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/wininet/tests/http.c | 51 +++++++++++++++++++++++++++++++++-------------- 1 file changed, 36 insertions(+), 15 deletions(-)
diff --git a/dlls/wininet/tests/http.c b/dlls/wininet/tests/http.c index 78cec50..d42c3e7 100644 --- a/dlls/wininet/tests/http.c +++ b/dlls/wininet/tests/http.c @@ -475,6 +475,18 @@ static void _close_request(unsigned line, test_request_t *req) ok_(__FILE__,line)(ret, "InternetCloseHandle(session) failed: %u\n", GetLastError()); }
+#define receive_simple_request(a,b,c) _receive_simple_request(__LINE__,a,b,c) +static DWORD _receive_simple_request(unsigned line, HINTERNET req, char *buf, size_t buf_size) +{ + DWORD read = 0; + BOOL ret; + + ret = InternetReadFile(req, buf, buf_size, &read); + ok_(__FILE__,line)(ret, "InternetReadFile failed: %u\n", GetLastError()); + + return read; +} + static void close_async_handle(HINTERNET handle, HANDLE complete_event, int handle_cnt) { BOOL res; @@ -2055,7 +2067,8 @@ static DWORD CALLBACK server_thread(LPVOID param) int r, c = -1, i, on, count = 0; SOCKET s; struct sockaddr_in sa; - char buffer[0x100]; + char *buffer; + size_t buffer_size; WSADATA wsaData; int last_request = 0; char host_header[22]; @@ -2086,16 +2099,20 @@ static DWORD CALLBACK server_thread(LPVOID param)
sprintf(host_header, "Host: localhost:%d", si->port); sprintf(host_header_override, "Host: test.local:%d\r\n", si->port); + buffer = HeapAlloc(GetProcessHeap(), 0, buffer_size = 1000);
do { if(c == -1) c = accept(s, NULL, NULL);
- memset(buffer, 0, sizeof buffer); - for(i=0; i<(sizeof buffer-1); i++) + memset(buffer, 0, buffer_size); + for(i=0;; i++) { - r = recv(c, &buffer[i], 1, 0); + if(i == buffer_size) + buffer = HeapReAlloc(GetProcessHeap(), 0, buffer, buffer_size *= 2); + + r = recv(c, buffer+i, 1, 0); if (r != 1) break; if (i<4) continue; @@ -2168,7 +2185,7 @@ static DWORD CALLBACK server_thread(LPVOID param) if (strstr(buffer, "Content-Length: 100")) { if (strstr(buffer, "POST /test7b")) - recvfrom(c, buffer, sizeof buffer, 0, NULL, NULL); + recvfrom(c, buffer, buffer_size, 0, NULL, NULL); send(c, okmsg, sizeof okmsg-1, 0); send(c, page1, sizeof page1-1, 0); } @@ -2259,7 +2276,7 @@ static DWORD CALLBACK server_thread(LPVOID param) if (strstr(buffer, "GET /testH")) { send(c, ok_with_length2, sizeof(ok_with_length2)-1, 0); - recvfrom(c, buffer, sizeof(buffer), 0, NULL, NULL); + recvfrom(c, buffer, buffer_size, 0, NULL, NULL); send(c, ok_with_length, sizeof(ok_with_length)-1, 0); }
@@ -2341,13 +2358,6 @@ static DWORD CALLBACK server_thread(LPVOID param) } if (strstr(buffer, "GET /test_premature_disconnect")) trace("closing connection\n"); - if (strstr(buffer, "/test_accept_encoding_http10")) - { - if (strstr(buffer, "Accept-Encoding: gzip")) - send(c, okmsg, sizeof okmsg-1, 0); - else - send(c, notokmsg, sizeof notokmsg-1, 0); - } if (strstr(buffer, "HEAD /upload.txt")) { if (strstr(buffer, "Authorization: Basic dXNlcjpwd2Q=")) @@ -2384,12 +2394,18 @@ static DWORD CALLBACK server_thread(LPVOID param) SetEvent(server_req_rec_event); WaitForSingleObject(conn_wait_event, INFINITE); } + if (strstr(buffer, "/echo_request")) + { + send(c, okmsg, sizeof(okmsg)-1, 0); + send(c, buffer, strlen(buffer), 0); + } shutdown(c, 2); closesocket(c); c = -1; } while (!last_request);
closesocket(s); + HeapFree(GetProcessHeap(), 0, buffer);
return 0; } @@ -4250,6 +4266,7 @@ static void test_request_content_length(int port) static void test_accept_encoding(int port) { HINTERNET ses, con, req; + char buf[1000]; BOOL ret;
ses = InternetOpenA("winetest", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0); @@ -4258,7 +4275,7 @@ static void test_accept_encoding(int port) con = InternetConnectA(ses, "localhost", port, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0); ok(con != NULL, "InternetConnect failed\n");
- req = HttpOpenRequestA(con, "GET", "/test_accept_encoding_http10", "HTTP/1.0", NULL, NULL, 0, 0); + req = HttpOpenRequestA(con, "GET", "/echo_request", "HTTP/1.0", NULL, NULL, 0, 0); ok(req != NULL, "HttpOpenRequest failed\n");
ret = HttpAddRequestHeadersA(req, "Accept-Encoding: gzip\r\n", ~0u, HTTP_ADDREQ_FLAG_REPLACE | HTTP_ADDREQ_FLAG_ADD); @@ -4268,16 +4285,20 @@ static void test_accept_encoding(int port) ok(ret, "HttpSendRequestA failed\n");
test_status_code(req, 200); + receive_simple_request(req, buf, sizeof(buf)); + ok(strstr(buf, "Accept-Encoding: gzip") != NULL, "Accept-Encoding header not found in %s\n", buf);
InternetCloseHandle(req);
- req = HttpOpenRequestA(con, "GET", "/test_accept_encoding_http10", "HTTP/1.0", NULL, NULL, 0, 0); + req = HttpOpenRequestA(con, "GET", "/echo_request", "HTTP/1.0", NULL, NULL, 0, 0); ok(req != NULL, "HttpOpenRequest failed\n");
ret = HttpSendRequestA(req, "Accept-Encoding: gzip", ~0u, NULL, 0); ok(ret, "HttpSendRequestA failed\n");
test_status_code(req, 200); + receive_simple_request(req, buf, sizeof(buf)); + ok(strstr(buf, "Accept-Encoding: gzip") != NULL, "Accept-Encoding header not found in %s\n", buf);
InternetCloseHandle(req); InternetCloseHandle(con);