From: Piotr Caban piotr@codeweavers.com
--- dlls/wininet/internet.c | 47 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+)
diff --git a/dlls/wininet/internet.c b/dlls/wininet/internet.c index fe49ff27b31..fdea5c8c3c6 100644 --- a/dlls/wininet/internet.c +++ b/dlls/wininet/internet.c @@ -1150,6 +1150,53 @@ static DWORD APPINFO_SetOption(object_header_t *hdr, DWORD option, void *buf, DW case INTERNET_OPTION_REFRESH: FIXME("INTERNET_OPTION_REFRESH\n"); return ERROR_SUCCESS; + case INTERNET_OPTION_PER_CONNECTION_OPTION: { + INTERNET_PER_CONN_OPTION_LISTW *con = buf; + unsigned int i; + + EnterCriticalSection( &WININET_cs ); + for (i = 0; i < con->dwOptionCount; i++) { + INTERNET_PER_CONN_OPTIONW *option = con->pOptions + i; + + switch (option->dwOption) { + case INTERNET_PER_CONN_PROXY_SERVER: + free(global_proxy.proxy); + global_proxy.proxy = wcsdup(option->Value.pszValue); + break; + + case INTERNET_PER_CONN_FLAGS: + if(option->Value.dwValue & ~(PROXY_TYPE_PROXY | PROXY_TYPE_DIRECT)) + FIXME("Unhandled flags: 0x%lx\n", option->Value.dwValue); + global_proxy.flags = option->Value.dwValue; + break; + + case INTERNET_PER_CONN_PROXY_BYPASS: + free(global_proxy.proxyBypass); + global_proxy.proxyBypass = wcsdup(option->Value.pszValue); + break; + + case INTERNET_PER_CONN_AUTOCONFIG_URL: + free(global_proxy.autoconf_url); + global_proxy.autoconf_url = wcsdup(option->Value.pszValue); + break; + + case INTERNET_PER_CONN_AUTODISCOVERY_FLAGS: + case INTERNET_PER_CONN_AUTOCONFIG_SECONDARY_URL: + case INTERNET_PER_CONN_AUTOCONFIG_RELOAD_DELAY_MINS: + case INTERNET_PER_CONN_AUTOCONFIG_LAST_DETECT_TIME: + case INTERNET_PER_CONN_AUTOCONFIG_LAST_DETECT_URL: + FIXME("Unhandled dwOption %ld\n", option->dwOption); + break; + + default: + FIXME("Unknown dwOption %ld\n", option->dwOption); + SetLastError(ERROR_INVALID_PARAMETER); + break; + } + } + LeaveCriticalSection( &WININET_cs ); + return ERROR_SUCCESS; + } }
return INET_SetOption(hdr, option, buf, size);