mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-11-12 23:18:14 +01:00
add LOCK() for proxy related data-structures
- fix #1560 by properly locking proxy related data-structures - update GetProxy() and introduce GetNameProxy() to be able to use a thread-safe local copy from proxyInfo and nameproxyInfo - update usage of GetProxy() all over the source to match the new behaviour, as it now fills a full proxyType object - rename GetNameProxy() into HaveNameProxy() to be more clear
This commit is contained in:
@@ -145,18 +145,18 @@ QVariant OptionsModel::data(const QModelIndex & index, int role) const
|
||||
case ProxyUse:
|
||||
return settings.value("fUseProxy", false);
|
||||
case ProxyIP: {
|
||||
CService addrProxy;
|
||||
if (GetProxy(NET_IPV4, addrProxy))
|
||||
return QVariant(QString::fromStdString(addrProxy.ToStringIP()));
|
||||
proxyType proxy;
|
||||
if (GetProxy(NET_IPV4, proxy))
|
||||
return QVariant(QString::fromStdString(proxy.first.ToStringIP()));
|
||||
else
|
||||
return QVariant(QString::fromStdString("127.0.0.1"));
|
||||
}
|
||||
case ProxyPort: {
|
||||
CService addrProxy;
|
||||
if (GetProxy(NET_IPV4, addrProxy))
|
||||
return QVariant(addrProxy.GetPort());
|
||||
proxyType proxy;
|
||||
if (GetProxy(NET_IPV4, proxy))
|
||||
return QVariant(proxy.first.GetPort());
|
||||
else
|
||||
return 9050;
|
||||
return QVariant(9050);
|
||||
}
|
||||
case ProxySocksVersion:
|
||||
return settings.value("nSocksVersion", 5);
|
||||
@@ -176,6 +176,7 @@ QVariant OptionsModel::data(const QModelIndex & index, int role) const
|
||||
}
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
bool OptionsModel::setData(const QModelIndex & index, const QVariant & value, int role)
|
||||
{
|
||||
bool successful = true; /* set to false on parse error */
|
||||
@@ -204,29 +205,37 @@ bool OptionsModel::setData(const QModelIndex & index, const QVariant & value, in
|
||||
settings.setValue("fUseProxy", value.toBool());
|
||||
ApplyProxySettings();
|
||||
break;
|
||||
case ProxyIP:
|
||||
{
|
||||
CService addrProxy("127.0.0.1", 9050);
|
||||
GetProxy(NET_IPV4, addrProxy);
|
||||
CNetAddr addr(value.toString().toStdString());
|
||||
addrProxy.SetIP(addr);
|
||||
settings.setValue("addrProxy", addrProxy.ToStringIPPort().c_str());
|
||||
successful = ApplyProxySettings();
|
||||
}
|
||||
break;
|
||||
case ProxyPort:
|
||||
{
|
||||
CService addrProxy("127.0.0.1", 9050);
|
||||
GetProxy(NET_IPV4, addrProxy);
|
||||
addrProxy.SetPort(value.toInt());
|
||||
settings.setValue("addrProxy", addrProxy.ToStringIPPort().c_str());
|
||||
successful = ApplyProxySettings();
|
||||
}
|
||||
break;
|
||||
case ProxySocksVersion:
|
||||
settings.setValue("nSocksVersion", value.toInt());
|
||||
ApplyProxySettings();
|
||||
break;
|
||||
case ProxyIP: {
|
||||
proxyType proxy;
|
||||
proxy.first = CService("127.0.0.1", 9050);
|
||||
GetProxy(NET_IPV4, proxy);
|
||||
|
||||
CNetAddr addr(value.toString().toStdString());
|
||||
proxy.first.SetIP(addr);
|
||||
settings.setValue("addrProxy", proxy.first.ToStringIPPort().c_str());
|
||||
successful = ApplyProxySettings();
|
||||
}
|
||||
break;
|
||||
case ProxyPort: {
|
||||
proxyType proxy;
|
||||
proxy.first = CService("127.0.0.1", 9050);
|
||||
GetProxy(NET_IPV4, proxy);
|
||||
|
||||
proxy.first.SetPort(value.toInt());
|
||||
settings.setValue("addrProxy", proxy.first.ToStringIPPort().c_str());
|
||||
successful = ApplyProxySettings();
|
||||
}
|
||||
break;
|
||||
case ProxySocksVersion: {
|
||||
proxyType proxy;
|
||||
proxy.second = 5;
|
||||
GetProxy(NET_IPV4, proxy);
|
||||
|
||||
proxy.second = value.toInt();
|
||||
settings.setValue("nSocksVersion", proxy.second);
|
||||
successful = ApplyProxySettings();
|
||||
}
|
||||
break;
|
||||
case Fee:
|
||||
nTransactionFee = value.toLongLong();
|
||||
settings.setValue("nTransactionFee", nTransactionFee);
|
||||
|
||||
Reference in New Issue
Block a user