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