Module: wine Branch: master Commit: e385df0b8ee9dc57854986319bf2688dfaee4bb0 URL: http://source.winehq.org/git/wine.git/?a=commit;h=e385df0b8ee9dc57854986319b...
Author: Jacek Caban jacek@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;