aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCory Fields <[email protected]>2016-10-04 19:27:11 -0400
committerCory Fields <[email protected]>2016-10-04 19:43:53 -0400
commitcb78c60534e5be205f9190cb0cde700f9e9fa38d (patch)
treeb217ec453786a1ec3882cce301bfa4b2479e3705 /src
parentMerge #8848: Add NULLDUMMY verify flag in bitcoinconsensus.h (diff)
downloaddiscoin-cb78c60534e5be205f9190cb0cde700f9e9fa38d.tar.xz
discoin-cb78c60534e5be205f9190cb0cde700f9e9fa38d.zip
gui: fix ban from qt console
Rather than doing a circle and re-resolving the node's IP, just use the one from nodestats directly. This requires syncing the addr field from CNode.
Diffstat (limited to 'src')
-rw-r--r--src/net.cpp1
-rw-r--r--src/net.h1
-rw-r--r--src/qt/rpcconsole.cpp25
3 files changed, 15 insertions, 12 deletions
diff --git a/src/net.cpp b/src/net.cpp
index 770e2d295..19dd04099 100644
--- a/src/net.cpp
+++ b/src/net.cpp
@@ -629,6 +629,7 @@ void CNode::copyStats(CNodeStats &stats)
{
stats.nodeid = this->GetId();
X(nServices);
+ X(addr);
X(fRelayTxes);
X(nLastSend);
X(nLastRecv);
diff --git a/src/net.h b/src/net.h
index d0b277362..67f0abe4b 100644
--- a/src/net.h
+++ b/src/net.h
@@ -505,6 +505,7 @@ public:
double dPingWait;
double dPingMin;
std::string addrLocal;
+ CAddress addr;
};
diff --git a/src/qt/rpcconsole.cpp b/src/qt/rpcconsole.cpp
index ace9f1cea..b6ed75535 100644
--- a/src/qt/rpcconsole.cpp
+++ b/src/qt/rpcconsole.cpp
@@ -981,20 +981,21 @@ void RPCConsole::banSelectedNode(int bantime)
if (!clientModel || !g_connman)
return;
- // Get currently selected peer address
- QString strNode = GUIUtil::getEntryData(ui->peerWidget, 0, PeerTableModel::Address).toString();
- // Find possible nodes, ban it and clear the selected node
- std::string nStr = strNode.toStdString();
- std::string addr;
- int port = 0;
- SplitHostPort(nStr, port, addr);
+ if(cachedNodeid == -1)
+ return;
- CNetAddr resolved;
- if(!LookupHost(addr.c_str(), resolved, false))
+ // Get currently selected peer address
+ int detailNodeRow = clientModel->getPeerTableModel()->getRowByNodeId(cachedNodeid);
+ if(detailNodeRow < 0)
return;
- g_connman->Ban(resolved, BanReasonManuallyAdded, bantime);
- clearSelectedNode();
- clientModel->getBanTableModel()->refresh();
+
+ // Find possible nodes, ban it and clear the selected node
+ const CNodeCombinedStats *stats = clientModel->getPeerTableModel()->getNodeStats(detailNodeRow);
+ if(stats) {
+ g_connman->Ban(stats->nodeStats.addr, BanReasonManuallyAdded, bantime);
+ clearSelectedNode();
+ clientModel->getBanTableModel()->refresh();
+ }
}
void RPCConsole::unbanSelectedNode()