fix: reimplement setProxy logic
This commit is contained in:
+18
-8
@@ -10,29 +10,39 @@ bool setProxy(bool enable, const std::string& proxyAddr)
|
||||
{
|
||||
INTERNET_PER_CONN_OPTION_LIST list;
|
||||
INTERNET_PER_CONN_OPTION options[3];
|
||||
unsigned long listSize = sizeof(INTERNET_PER_CONN_OPTION_LIST);
|
||||
|
||||
ZeroMemory(&list, sizeof(list));
|
||||
ZeroMemory(options, sizeof(options));
|
||||
|
||||
options[0].dwOption = INTERNET_PER_CONN_FLAGS;
|
||||
|
||||
if (enable)
|
||||
{
|
||||
if (proxyAddr.empty()) return false;
|
||||
|
||||
options[0].Value.dwValue = PROXY_TYPE_PROXY | PROXY_TYPE_DIRECT;
|
||||
else
|
||||
options[0].Value.dwValue = PROXY_TYPE_DIRECT;
|
||||
|
||||
options[1].dwOption = INTERNET_PER_CONN_PROXY_SERVER;
|
||||
options[1].Value.pszValue = const_cast<char*>(proxyAddr.c_str());
|
||||
|
||||
options[2].dwOption = INTERNET_PER_CONN_PROXY_BYPASS;
|
||||
options[2].Value.pszValue = const_cast<char*>("<local>");
|
||||
options[2].Value.pszValue = (char*)"<local>";
|
||||
|
||||
list.dwOptionCount = 3;
|
||||
}
|
||||
else
|
||||
{
|
||||
options[0].Value.dwValue = PROXY_TYPE_DIRECT;
|
||||
list.dwOptionCount = 1;
|
||||
}
|
||||
|
||||
list.dwSize = sizeof(INTERNET_PER_CONN_OPTION_LIST);
|
||||
list.pszConnection = NULL;
|
||||
list.dwOptionCount = 3;
|
||||
list.dwOptionError = 0;
|
||||
list.pOptions = options;
|
||||
|
||||
if (!InternetSetOptionA(NULL, INTERNET_OPTION_PER_CONNECTION_OPTION, &list, listSize))
|
||||
if (!InternetSetOption(NULL, INTERNET_OPTION_PER_CONNECTION_OPTION, &list, sizeof(list)))
|
||||
{
|
||||
Log::error("Failed to set proxy options, Err: {}", GetLastError());
|
||||
Log::error("Failed to set proxy options - error: {}", GetLastError());
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user