InternetOpenUrl

Uwe Bonnes bon at elektron.ikp.physik.tu-darmstadt.de
Sat Feb 22 15:52:59 CST 2003


Changelog:
	dlls/wininet/internet.c: InternetOpenUrlA (http/s case)
	Use client for HttpOpenRequestA, don't insert HOST: twice
	wine/dlls/wininet/http.c: HttpAddRequestHeadersA
	Allow lpszHeader == NULL
	wine/dlls/wininet/tests/http.c
	Test for above problems

This makes Lineare Technology Switchercad III do the Online Update with
builtin wininet.

Bye
-- 
Uwe Bonnes                bon at elektron.ikp.physik.tu-darmstadt.de

Institut fuer Kernphysik  Schlossgartenstrasse 9  64289 Darmstadt
--------- Tel. 06151 162516 -------- Fax. 06151 164321 ----------
Index: wine/dlls/wininet/internet.c
===================================================================
RCS file: /home/wine/wine/dlls/wininet/internet.c,v
retrieving revision 1.50
diff -u -r1.50 internet.c
--- wine/dlls/wininet/internet.c	28 Jan 2003 00:17:15 -0000	1.50
+++ wine/dlls/wininet/internet.c	22 Feb 2003 21:47:09 -0000
@@ -1737,13 +1737,12 @@
         password, INTERNET_SERVICE_HTTP, dwFlags, dwContext);
     if(client == NULL)
       return NULL;
-    client1 = HttpOpenRequestA(hInternet, NULL, path, NULL, NULL, accept, dwFlags, dwContext);
+    client1 = HttpOpenRequestA(client, NULL, path, NULL, NULL, accept, dwFlags, dwContext);
     if(client1 == NULL) {
       InternetCloseHandle(client);
       return NULL;
     }
     HttpAddRequestHeadersA(client1, lpszHeaders, dwHeadersLength, HTTP_ADDREQ_FLAG_ADD);
-    HttpAddRequestHeadersA(client1, hostreq, -1L, HTTP_ADDREQ_FLAG_ADD_IF_NEW);
     if(!HttpSendRequestA(client1, NULL, 0, NULL, 0)) {
       InternetCloseHandle(client1);
       InternetCloseHandle(client);
Index: wine/dlls/wininet/http.c
===================================================================
RCS file: /home/wine/wine/dlls/wininet/http.c,v
retrieving revision 1.32
diff -u -r1.32 http.c
--- wine/dlls/wininet/http.c	6 Dec 2002 23:20:31 -0000	1.32
+++ wine/dlls/wininet/http.c	22 Feb 2003 21:47:10 -0000
@@ -119,6 +119,8 @@
         return FALSE;
     }
 
+    if (!lpszHeader) 
+      return TRUE;
     buffer = HTTP_strdup(lpszHeader);
     lpszStart = buffer;
 
Index: wine/dlls/wininet/tests/http.c
===================================================================
RCS file: /home/wine/wine/dlls/wininet/tests/http.c,v
retrieving revision 1.6
diff -u -r1.6 http.c
--- wine/dlls/wininet/tests/http.c	17 Dec 2002 21:03:33 -0000	1.6
+++ wine/dlls/wininet/tests/http.c	22 Feb 2003 21:47:10 -0000
@@ -202,9 +202,75 @@
     }
 }
 
+void InternetOpenUrlA_test(void)
+{
+  HINTERNET myhinternet, myhttp;
+  char buffer[0x400];
+  URL_COMPONENTSA urlComponents;
+  char protocol[32], hostName[1024], userName[1024];
+  char password[1024], extra[1024], path[1024];
+  DWORD size, readbytes, totalbytes=0;
+  
+  myhinternet = InternetOpen("Winetest",0,NULL,NULL,INTERNET_FLAG_NO_CACHE_WRITE);
+  ok((myhinternet != 0), "InternetOpen failed, error %lx\n",GetLastError());
+  size = 0x400;
+  ok (InternetCanonicalizeUrl("http://LTspice.linear-tech.com/fieldsync2/release.log.gz",buffer, &size,ICU_BROWSER_MODE),
+      "InternetCanonicalizeUrl failed, error %lx\n",GetLastError());
+  
+  urlComponents.dwStructSize = sizeof(URL_COMPONENTSA);
+  urlComponents.lpszScheme = protocol;
+  urlComponents.dwSchemeLength = 32;
+  urlComponents.lpszHostName = hostName;
+  urlComponents.dwHostNameLength = 1024;
+  urlComponents.lpszUserName = userName;
+  urlComponents.dwUserNameLength = 1024;
+  urlComponents.lpszPassword = password;
+  urlComponents.dwPasswordLength = 1024;
+  urlComponents.lpszUrlPath = path;
+  urlComponents.dwUrlPathLength = 2048;
+  urlComponents.lpszExtraInfo = extra;
+  urlComponents.dwExtraInfoLength = 1024;
+  ok((InternetCrackUrl("http://LTspice.linear-tech.com/fieldsync2/release.log.gz", 0,0,&urlComponents)),
+     "InternetCrackUrl failed, error %lx\n",GetLastError());
+  myhttp = InternetOpenUrl(myhinternet, "http://LTspice.linear-tech.com/fieldsync2/release.log.gz", 0, 0,
+			   INTERNET_FLAG_RELOAD|INTERNET_FLAG_NO_CACHE_WRITE|INTERNET_FLAG_TRANSFER_BINARY,0);
+  ok((myhttp != 0),"InternetOpenUrl failed, error %lx\n",GetLastError());
+  ok(InternetReadFile(myhttp, buffer,0x400,&readbytes), "InternetReadFile failed, error %lx\n",GetLastError());
+  totalbytes += readbytes;
+  while (readbytes && InternetReadFile(myhttp, buffer,0x400,&readbytes))
+    totalbytes += readbytes;
+  printf("read 0x%08lx bytes\n",totalbytes);
+}
+  
+void InternetCrackUrl_test(void)
+{
+  URL_COMPONENTSA urlComponents;
+  char protocol[32], hostName[1024], userName[1024];
+  char password[1024], extra[1024], path[1024];
+
+  urlComponents.dwStructSize = sizeof(URL_COMPONENTSA);
+  urlComponents.lpszScheme = protocol;
+  urlComponents.dwSchemeLength = 32;
+  urlComponents.lpszHostName = hostName;
+  urlComponents.dwHostNameLength = 1024;
+  urlComponents.lpszUserName = userName;
+  urlComponents.dwUserNameLength = 1024;
+  urlComponents.lpszPassword = password;
+  urlComponents.dwPasswordLength = 1024;
+  urlComponents.lpszUrlPath = path;
+  urlComponents.dwUrlPathLength = 2048;
+  urlComponents.lpszExtraInfo = extra;
+  urlComponents.dwExtraInfoLength = 1024;
+  ok((InternetCrackUrl("http://LTspice.linear-tech.com/fieldsync2/release.log.gz", 0,0,&urlComponents)),
+     "InternetCrackUrl failed, error %lx\n",GetLastError());
+  ok((strcmp("/fieldsync2/release.log.gz",path) == 0),"path cracked wrong");
+}
 
 START_TEST(http)
 {
     winapi_test(0x10000000);
     winapi_test(0x00000000);
+    InternetCrackUrl_test();
+    InternetOpenUrlA_test();
+    
 }



More information about the wine-patches mailing list