Jacek Caban : wininet: Rewrite test_accept_encoding using more generic request.

Alexandre Julliard julliard at wine.codeweavers.com
Wed May 18 10:51:11 CDT 2016


Module: wine
Branch: master
Commit: ce4bdcd0c1f619096631974d101eb4b95978671d
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=ce4bdcd0c1f619096631974d101eb4b95978671d

Author: Jacek Caban <jacek at 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 at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at 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);




More information about the wine-cvs mailing list