Browse Source

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.
0.14
Cory Fields 8 years ago
parent
commit
cb78c60534
  1. 1
      src/net.cpp
  2. 1
      src/net.h
  3. 21
      src/qt/rpcconsole.cpp

1
src/net.cpp

@ -629,6 +629,7 @@ void CNode::copyStats(CNodeStats &stats)
{ {
stats.nodeid = this->GetId(); stats.nodeid = this->GetId();
X(nServices); X(nServices);
X(addr);
X(fRelayTxes); X(fRelayTxes);
X(nLastSend); X(nLastSend);
X(nLastRecv); X(nLastRecv);

1
src/net.h

@ -505,6 +505,7 @@ public:
double dPingWait; double dPingWait;
double dPingMin; double dPingMin;
std::string addrLocal; std::string addrLocal;
CAddress addr;
}; };

21
src/qt/rpcconsole.cpp

@ -981,21 +981,22 @@ void RPCConsole::banSelectedNode(int bantime)
if (!clientModel || !g_connman) if (!clientModel || !g_connman)
return; return;
// Get currently selected peer address if(cachedNodeid == -1)
QString strNode = GUIUtil::getEntryData(ui->peerWidget, 0, PeerTableModel::Address).toString(); return;
// 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);
CNetAddr resolved; // Get currently selected peer address
if(!LookupHost(addr.c_str(), resolved, false)) int detailNodeRow = clientModel->getPeerTableModel()->getRowByNodeId(cachedNodeid);
if(detailNodeRow < 0)
return; return;
g_connman->Ban(resolved, BanReasonManuallyAdded, bantime);
// 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(); clearSelectedNode();
clientModel->getBanTableModel()->refresh(); clientModel->getBanTableModel()->refresh();
} }
}
void RPCConsole::unbanSelectedNode() void RPCConsole::unbanSelectedNode()
{ {

Loading…
Cancel
Save