https://git.reactos.org/?p=reactos.git;a=commitdiff;h=0530cb8bedec62988fb3dc...
commit 0530cb8bedec62988fb3dc5815591185c44e1679 Author: Amine Khaldi amine.khaldi@reactos.org AuthorDate: Sat Mar 24 13:15:44 2018 +0100 Commit: Amine Khaldi amine.khaldi@reactos.org CommitDate: Sat Mar 24 13:15:44 2018 +0100
[WINHTTP] Sync with Wine Staging 3.3. CORE-14434 --- dll/win32/winhttp/CMakeLists.txt | 4 +-- dll/win32/winhttp/cookie.c | 12 +++++++ dll/win32/winhttp/handle.c | 12 +++++++ dll/win32/winhttp/main.c | 17 ++++++++-- dll/win32/winhttp/net.c | 27 ++++++++++++++-- dll/win32/winhttp/precomp.h | 26 ++++++++++++++++ dll/win32/winhttp/request.c | 36 +++++++++++++-------- dll/win32/winhttp/session.c | 62 +++++++++++++++++++++---------------- dll/win32/winhttp/url.c | 13 ++++++++ dll/win32/winhttp/winhttp_private.h | 56 +++++++-------------------------- media/doc/README.WINE | 2 +- 11 files changed, 174 insertions(+), 93 deletions(-)
diff --git a/dll/win32/winhttp/CMakeLists.txt b/dll/win32/winhttp/CMakeLists.txt index 9245cfaf5f..988c769b0b 100644 --- a/dll/win32/winhttp/CMakeLists.txt +++ b/dll/win32/winhttp/CMakeLists.txt @@ -17,7 +17,7 @@ list(APPEND SOURCE request.c session.c url.c - winhttp_private.h) + precomp.h)
set_source_files_properties(rsrc.rc PROPERTIES OBJECT_DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/winhttp_tlb.tlb) add_typelib(winhttp_tlb.idl) @@ -32,5 +32,5 @@ target_link_libraries(winhttp uuid wine) add_delay_importlibs(winhttp oleaut32 ole32 crypt32 secur32) add_importlibs(winhttp user32 advapi32 ws2_32 jsproxy kernel32_vista msvcrt kernel32 ntdll) add_dependencies(winhttp stdole2) -add_pch(winhttp winhttp_private.h SOURCE) +add_pch(winhttp precomp.h SOURCE) add_cd_file(TARGET winhttp DESTINATION reactos/system32 FOR all) diff --git a/dll/win32/winhttp/cookie.c b/dll/win32/winhttp/cookie.c index 2d2dbf325e..b4b25304f7 100644 --- a/dll/win32/winhttp/cookie.c +++ b/dll/win32/winhttp/cookie.c @@ -16,8 +16,20 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */
+#include "config.h" +#include <stdarg.h> + +#include "wine/debug.h" +#include "wine/list.h" + +#include "windef.h" +#include "winbase.h" +#include "winhttp.h" + #include "winhttp_private.h"
+WINE_DEFAULT_DEBUG_CHANNEL(winhttp); + static domain_t *add_domain( session_t *session, WCHAR *name ) { domain_t *domain; diff --git a/dll/win32/winhttp/handle.c b/dll/win32/winhttp/handle.c index e67e5e3eba..6026a49610 100644 --- a/dll/win32/winhttp/handle.c +++ b/dll/win32/winhttp/handle.c @@ -18,8 +18,20 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */
+#include "config.h" +#include "wine/port.h" +#include "wine/debug.h" + +#include <stdarg.h> + +#include "windef.h" +#include "winbase.h" +#include "winhttp.h" + #include "winhttp_private.h"
+WINE_DEFAULT_DEBUG_CHANNEL(winhttp); + #define HANDLE_CHUNK_SIZE 0x10
static CRITICAL_SECTION handle_cs; diff --git a/dll/win32/winhttp/main.c b/dll/win32/winhttp/main.c index 55c601e5d5..a63f28cf10 100644 --- a/dll/win32/winhttp/main.c +++ b/dll/win32/winhttp/main.c @@ -16,13 +16,24 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */
+#define COBJMACROS +#include "config.h" +#include <stdarg.h> + +#include "windef.h" +#include "winbase.h" +#include "objbase.h" +#include "rpcproxy.h" +#include "httprequest.h" +#include "winhttp.h" + +#include "wine/debug.h" #include "winhttp_private.h"
-#include <rpcproxy.h> -#include <httprequest.h> - HINSTANCE winhttp_instance;
+WINE_DEFAULT_DEBUG_CHANNEL(winhttp); + /****************************************************************** * DllMain (winhttp.@) */ diff --git a/dll/win32/winhttp/net.c b/dll/win32/winhttp/net.c index bf78b22647..e9ff86a165 100644 --- a/dll/win32/winhttp/net.c +++ b/dll/win32/winhttp/net.c @@ -17,11 +17,15 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */
-#include "winhttp_private.h" +#include "config.h" +#include "wine/port.h"
+#include <stdarg.h> +#include <stdio.h> +#include <errno.h> #include <assert.h> -#include <schannel.h>
+#include <sys/types.h> #ifdef HAVE_SYS_SOCKET_H # include <sys/socket.h> #endif @@ -35,6 +39,25 @@ # include <poll.h> #endif
+#define NONAMELESSUNION + +#include "wine/debug.h" +#include "wine/library.h" + +#include "windef.h" +#include "winbase.h" +#include "winhttp.h" +#include "wincrypt.h" +#include "schannel.h" + +#include "winhttp_private.h" + +/* to avoid conflicts with the Unix socket headers */ +#define USE_WS_PREFIX +#include "winsock2.h" + +WINE_DEFAULT_DEBUG_CHANNEL(winhttp); + #ifndef HAVE_GETADDRINFO
/* critical section to protect non-reentrant gethostbyname() */ diff --git a/dll/win32/winhttp/precomp.h b/dll/win32/winhttp/precomp.h new file mode 100644 index 0000000000..53f0b1365d --- /dev/null +++ b/dll/win32/winhttp/precomp.h @@ -0,0 +1,26 @@ + +#ifndef _WINHTTP_PRECOMP_H_ +#define _WINHTTP_PRECOMP_H_ + +#include <wine/config.h> + +#include <stdarg.h> + +#define WIN32_NO_STATUS +#define _INC_WINDOWS +#define COM_NO_WINDOWS_H + +#define COBJMACROS +#define NONAMELESSUNION + +#include <windef.h> +#include <winbase.h> +#include <ole2.h> +#include <winsock2.h> +#include <winhttp.h> + +#include <wine/debug.h> + +#include "winhttp_private.h" + +#endif /* !_WINHTTP_PRECOMP_H_ */ diff --git a/dll/win32/winhttp/request.c b/dll/win32/winhttp/request.c index f3098e34d0..5bb5b09337 100644 --- a/dll/win32/winhttp/request.c +++ b/dll/win32/winhttp/request.c @@ -19,19 +19,34 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */
-#include "winhttp_private.h" +#define COBJMACROS +#include "config.h" +#include "wine/port.h"
+#include <stdarg.h> +#include <assert.h> #ifdef HAVE_ARPA_INET_H # include <arpa/inet.h> #endif
-#include <assert.h> -#include <winuser.h> -#include <httprequest.h> -#include <httprequestid.h> -#include <schannel.h> +#include "windef.h" +#include "winbase.h" +#include "ole2.h" +#include "initguid.h" +#include "httprequest.h" +#include "httprequestid.h" +#include "schannel.h" +#include "winhttp.h" + +#include "winhttp_private.h" + +#include "wine/debug.h"
+WINE_DEFAULT_DEBUG_CHANNEL(winhttp); + +#ifdef __REACTOS__ #include "inet_ntop.c" +#endif
#define DEFAULT_KEEP_ALIVE_TIMEOUT 30000
@@ -391,7 +406,7 @@ static BOOL delete_header( request_t *request, DWORD index ) return TRUE; }
-static BOOL process_header( request_t *request, LPCWSTR field, LPCWSTR value, DWORD flags, BOOL request_only ) +BOOL process_header( request_t *request, LPCWSTR field, LPCWSTR value, DWORD flags, BOOL request_only ) { int index; header_t hdr; @@ -2060,16 +2075,11 @@ static BOOL send_request( request_t *request, LPCWSTR headers, DWORD headers_len WCHAR *req = NULL; char *req_ascii; int bytes_sent; - DWORD len, i, flags; + DWORD len;
clear_response_headers( request ); drain_content( request );
- flags = WINHTTP_ADDREQ_FLAG_ADD|WINHTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA; - for (i = 0; i < request->num_accept_types; i++) - { - process_header( request, attr_accept, request->accept_types[i], flags, TRUE ); - } if (session->agent) process_header( request, attr_user_agent, session->agent, WINHTTP_ADDREQ_FLAG_ADD_IF_NEW, TRUE );
diff --git a/dll/win32/winhttp/session.c b/dll/win32/winhttp/session.c index 7ab10a66e4..cef533f1c0 100644 --- a/dll/win32/winhttp/session.c +++ b/dll/win32/winhttp/session.c @@ -16,12 +16,40 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */
+#include "config.h" +#include "wine/port.h" +#include "wine/debug.h" + +#include <stdarg.h> +#include <stdlib.h> + +#ifdef HAVE_CORESERVICES_CORESERVICES_H +#define GetCurrentThread MacGetCurrentThread +#define LoadResource MacLoadResource +#include <CoreServices/CoreServices.h> +#undef GetCurrentThread +#undef LoadResource +#undef DPRINTF +#endif + +#include "windef.h" +#include "winbase.h" +#ifndef __MINGW32__ +#define USE_WS_PREFIX +#endif +#include "winsock2.h" +#include "ws2ipdef.h" +#include "winhttp.h" +#include "wincrypt.h" +#include "winreg.h" +#define COBJMACROS +#include "ole2.h" +#include "dispex.h" +#include "activscp.h" + #include "winhttp_private.h"
-#include <wincrypt.h> -#include <winreg.h> -#include <dispex.h> -#include <activscp.h> +WINE_DEFAULT_DEBUG_CHANNEL(winhttp);
#define DEFAULT_RESOLVE_TIMEOUT 0 #define DEFAULT_CONNECT_TIMEOUT 20000 @@ -589,8 +617,6 @@ static void request_destroy( object_header_t *hdr ) heap_free( request->headers[i].value ); } heap_free( request->headers ); - for (i = 0; i < request->num_accept_types; i++) heap_free( request->accept_types[i] ); - heap_free( request->accept_types ); for (i = 0; i < TARGET_MAX; i++) { for (j = 0; j < SCHEME_MAX; j++) @@ -1016,32 +1042,14 @@ static const object_vtbl_t request_vtbl =
static BOOL store_accept_types( request_t *request, const WCHAR **accept_types ) { + static const WCHAR attr_accept[] = {'A','c','c','e','p','t',0}; + static const DWORD flags = WINHTTP_ADDREQ_FLAG_ADD | WINHTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA; const WCHAR **types = accept_types; - DWORD i;
if (!types) return TRUE; while (*types) { - request->num_accept_types++; - types++; - } - if (!request->num_accept_types) return TRUE; - if (!(request->accept_types = heap_alloc( request->num_accept_types * sizeof(WCHAR *)))) - { - request->num_accept_types = 0; - return FALSE; - } - types = accept_types; - for (i = 0; i < request->num_accept_types; i++) - { - if (!(request->accept_types[i] = strdupW( *types ))) - { - for ( ; i > 0; --i) heap_free( request->accept_types[i - 1] ); - heap_free( request->accept_types ); - request->accept_types = NULL; - request->num_accept_types = 0; - return FALSE; - } + process_header( request, attr_accept, *types, flags, TRUE ); types++; } return TRUE; diff --git a/dll/win32/winhttp/url.c b/dll/win32/winhttp/url.c index e21dbfc81c..32b30da0ce 100644 --- a/dll/win32/winhttp/url.c +++ b/dll/win32/winhttp/url.c @@ -16,8 +16,21 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */
+#include "config.h" +#include <stdarg.h> + +#include "wine/debug.h" + +#include "windef.h" +#include "winbase.h" +#include "winreg.h" +#include "winhttp.h" +#include "shlwapi.h" + #include "winhttp_private.h"
+WINE_DEFAULT_DEBUG_CHANNEL(winhttp); + static const WCHAR scheme_http[] = {'h','t','t','p',0}; static const WCHAR scheme_https[] = {'h','t','t','p','s',0};
diff --git a/dll/win32/winhttp/winhttp_private.h b/dll/win32/winhttp/winhttp_private.h index 1e6d16a238..d5ec9ca4f9 100644 --- a/dll/win32/winhttp/winhttp_private.h +++ b/dll/win32/winhttp/winhttp_private.h @@ -19,27 +19,15 @@ #ifndef _WINE_WINHTTP_PRIVATE_H_ #define _WINE_WINHTTP_PRIVATE_H_
-#include <wine/config.h> - -#include <stdarg.h> - -#define WIN32_NO_STATUS -#define _INC_WINDOWS -#define COM_NO_WINDOWS_H - -#define COBJMACROS -#define NONAMELESSUNION - -#include <windef.h> -#include <winbase.h> -#include <objbase.h> -#include <oleauto.h> -#include <winsock2.h> -#include <winhttp.h> +#ifndef __WINE_CONFIG_H +# error You must include config.h to use this header +#endif
-#include <wine/list.h> -#include <wine/unicode.h> +#include "wine/heap.h" +#include "wine/list.h" +#include "wine/unicode.h"
+#include <sys/types.h> #ifdef HAVE_SYS_SOCKET_H # include <sys/socket.h> #endif @@ -56,10 +44,8 @@ # define ioctlsocket ioctl #endif
-#include <sspi.h> - -#include <wine/debug.h> -WINE_DEFAULT_DEBUG_CHANNEL(winhttp); +#include "ole2.h" +#include "sspi.h"
static const WCHAR getW[] = {'G','E','T',0}; static const WCHAR postW[] = {'P','O','S','T',0}; @@ -238,8 +224,6 @@ typedef struct char read_buf[8192]; /* buffer for already read but not returned data */ header_t *headers; DWORD num_headers; - WCHAR **accept_types; - DWORD num_accept_types; struct authinfo *authinfo; struct authinfo *proxy_authinfo; HANDLE task_wait; @@ -334,34 +318,16 @@ void destroy_authinfo( struct authinfo * ) DECLSPEC_HIDDEN;
void release_host( hostdata_t *host ) DECLSPEC_HIDDEN;
+BOOL process_header( request_t *request, LPCWSTR field, LPCWSTR value, DWORD flags, BOOL request_only ) DECLSPEC_HIDDEN; + extern HRESULT WinHttpRequest_create( void ** ) DECLSPEC_HIDDEN; void release_typelib( void ) DECLSPEC_HIDDEN;
-static inline void* __WINE_ALLOC_SIZE(1) heap_alloc( SIZE_T size ) -{ - return HeapAlloc( GetProcessHeap(), 0, size ); -} - -static inline void* __WINE_ALLOC_SIZE(1) heap_alloc_zero( SIZE_T size ) -{ - return HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, size ); -} - -static inline void* __WINE_ALLOC_SIZE(2) heap_realloc( LPVOID mem, SIZE_T size ) -{ - return HeapReAlloc( GetProcessHeap(), 0, mem, size ); -} - static inline void* __WINE_ALLOC_SIZE(2) heap_realloc_zero( LPVOID mem, SIZE_T size ) { return HeapReAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, mem, size ); }
-static inline BOOL heap_free( LPVOID mem ) -{ - return HeapFree( GetProcessHeap(), 0, mem ); -} - static inline WCHAR *strdupW( const WCHAR *src ) { WCHAR *dst; diff --git a/media/doc/README.WINE b/media/doc/README.WINE index 3f6efecc3a..15c38ec55e 100644 --- a/media/doc/README.WINE +++ b/media/doc/README.WINE @@ -200,7 +200,7 @@ reactos/dll/win32/windowscodecs # Synced to WineStaging-3.3 reactos/dll/win32/windowscodecsext # Synced to WineStaging-2.9 reactos/dll/win32/winemp3.acm # Synced to WineStaging-3.3 reactos/dll/win32/wing32 # Synced to WineStaging-3.3 -reactos/dll/win32/winhttp # Synced to Wine-3.0 +reactos/dll/win32/winhttp # Synced to WineStaging-3.3 reactos/dll/win32/wininet # Synced to Wine-3.0 reactos/dll/win32/winmm # Forked at Wine-20050628 reactos/dll/win32/winmm/midimap # Forked at Wine-20050628