fix: reimplement setProxy logic
This commit is contained in:
+21
-11
@@ -10,29 +10,39 @@ bool setProxy(bool enable, const std::string& proxyAddr)
|
|||||||
{
|
{
|
||||||
INTERNET_PER_CONN_OPTION_LIST list;
|
INTERNET_PER_CONN_OPTION_LIST list;
|
||||||
INTERNET_PER_CONN_OPTION options[3];
|
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;
|
options[0].dwOption = INTERNET_PER_CONN_FLAGS;
|
||||||
|
|
||||||
if (enable)
|
if (enable)
|
||||||
|
{
|
||||||
|
if (proxyAddr.empty()) return false;
|
||||||
|
|
||||||
options[0].Value.dwValue = PROXY_TYPE_PROXY | PROXY_TYPE_DIRECT;
|
options[0].Value.dwValue = PROXY_TYPE_PROXY | 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 = (char*)"<local>";
|
||||||
|
|
||||||
|
list.dwOptionCount = 3;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
options[0].Value.dwValue = PROXY_TYPE_DIRECT;
|
options[0].Value.dwValue = PROXY_TYPE_DIRECT;
|
||||||
|
list.dwOptionCount = 1;
|
||||||
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>");
|
|
||||||
|
|
||||||
list.dwSize = sizeof(INTERNET_PER_CONN_OPTION_LIST);
|
list.dwSize = sizeof(INTERNET_PER_CONN_OPTION_LIST);
|
||||||
list.pszConnection = NULL;
|
list.pszConnection = NULL;
|
||||||
list.dwOptionCount = 3;
|
|
||||||
list.dwOptionError = 0;
|
|
||||||
list.pOptions = options;
|
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;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user