basic loop connection detection. prevent if you configure forward to 127.0.0.1:<port> and your server has the same port.

But this doesn't protect if not forwarded to localhost "127.0.0.1". Loop connections across different hosts arn't detected too.


Former-commit-id: 464a80708ebd11c0f7c83dc87a1afe0f10e0e078
This commit is contained in:
redpanther
2016-02-18 10:32:38 +01:00
parent a9e8f0264a
commit 0f17e031e8
2 changed files with 12 additions and 0 deletions

View File

@@ -16,6 +16,14 @@ JsonServer::JsonServer(Hyperion *hyperion, uint16_t port) :
throw std::runtime_error("Json server could not bind to port");
}
QList<MessageForwarder::JsonSlaveAddress> list = _hyperion->getForwarder()->getJsonSlaves();
for ( int i=0; i<list.size(); i++ )
{
if ( list.at(i).addr == QHostAddress::LocalHost && list.at(i).port == port ) {
throw std::runtime_error("Loop between proto server and forwarder detected. Fix your config!");
}
}
// Set trigger for incoming connections
connect(&_server, SIGNAL(newConnection()), this, SLOT(newConnection()));