Jacek Caban : urlmon: Update existing session if user agent changes.

Alexandre Julliard julliard at wine.codeweavers.com
Wed Nov 5 08:59:38 CST 2014


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Wed Nov  5 12:57:36 2014 +0100

urlmon: Update existing session if user agent changes.

---

 dlls/urlmon/protocol.c    | 6 ++++++
 dlls/urlmon/session.c     | 1 +
 dlls/urlmon/urlmon_main.h | 3 ++-
 3 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/dlls/urlmon/protocol.c b/dlls/urlmon/protocol.c
index 42ee8ed..1437152 100644
--- a/dlls/urlmon/protocol.c
+++ b/dlls/urlmon/protocol.c
@@ -302,6 +302,12 @@ HINTERNET get_internet_session(IInternetBindInfo *bind_info)
     return internet_session;
 }
 
+void update_user_agent(WCHAR *user_agent)
+{
+    if(internet_session)
+        InternetSetOptionW(internet_session, INTERNET_OPTION_USER_AGENT, user_agent, strlenW(user_agent));
+}
+
 HRESULT protocol_start(Protocol *protocol, IInternetProtocol *prot, IUri *uri,
         IInternetProtocolSink *protocol_sink, IInternetBindInfo *bind_info)
 {
diff --git a/dlls/urlmon/session.c b/dlls/urlmon/session.c
index bb41c31..e01e647 100644
--- a/dlls/urlmon/session.c
+++ b/dlls/urlmon/session.c
@@ -718,6 +718,7 @@ HRESULT WINAPI UrlMkSetSessionOption(DWORD dwOption, LPVOID pBuffer, DWORD dwBuf
 
         heap_free(user_agent);
         user_agent = new_user_agent;
+        update_user_agent(user_agent);
 
         LeaveCriticalSection(&session_cs);
         break;
diff --git a/dlls/urlmon/urlmon_main.h b/dlls/urlmon/urlmon_main.h
index 14a4f08..e134761 100644
--- a/dlls/urlmon/urlmon_main.h
+++ b/dlls/urlmon/urlmon_main.h
@@ -72,7 +72,8 @@ IInternetProtocol *get_mime_filter(LPCWSTR) DECLSPEC_HIDDEN;
 BOOL is_registered_protocol(LPCWSTR) DECLSPEC_HIDDEN;
 HRESULT register_namespace(IClassFactory*,REFIID,LPCWSTR,BOOL) DECLSPEC_HIDDEN;
 HINTERNET get_internet_session(IInternetBindInfo*) DECLSPEC_HIDDEN;
-LPWSTR get_useragent(void) DECLSPEC_HIDDEN;
+WCHAR *get_useragent(void) DECLSPEC_HIDDEN;
+void update_user_agent(WCHAR*) DECLSPEC_HIDDEN;
 void free_session(void) DECLSPEC_HIDDEN;
 
 HRESULT bind_to_storage(IUri*,IBindCtx*,REFIID,void**) DECLSPEC_HIDDEN;




More information about the wine-cvs mailing list