diff options
| author | Cory Fields <[email protected]> | 2016-10-04 19:27:11 -0400 |
|---|---|---|
| committer | Cory Fields <[email protected]> | 2016-10-04 19:43:53 -0400 |
| commit | cb78c60534e5be205f9190cb0cde700f9e9fa38d (patch) | |
| tree | b217ec453786a1ec3882cce301bfa4b2479e3705 /src/qt/rpcconsole.cpp | |
| parent | Merge #8848: Add NULLDUMMY verify flag in bitcoinconsensus.h (diff) | |
| download | discoin-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/qt/rpcconsole.cpp')
| -rw-r--r-- | src/qt/rpcconsole.cpp | 25 |
1 files changed, 13 insertions, 12 deletions
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() |