Commit 9f2c918c authored by BogDan Vatra's avatar BogDan Vatra Committed by Allen Winter
Browse files

Allow the user ot listen on all addresses on a free port.


The user can use "tcp://:0" address to register the server on any
interface on any free port, so we need to m_originalUrl fields after the
server listens in order to get the server port & address.

Change-Id: I421254928e1140dba2b050bcf7e25d45ee2bceba
Reviewed-by: default avatarBjörn Breitmeyer <bjoern.breitmeyer@kdab.com>
Showing with 9 additions and 7 deletions
......@@ -185,14 +185,16 @@ QUrl TcpServerImpl::address() const
bool TcpServerImpl::listen(const QUrl &address)
{
QHostAddress host(address.host());
if (host.isNull()) {
const QList<QHostAddress> addresses = QHostInfo::fromName(address.host()).addresses();;
Q_ASSERT(addresses.size() >= 1);
host = addresses.first();
m_originalUrl = address;
if (host.isNull())
host = QHostAddress::Any;
bool ret = m_server.listen(host, address.port());
if (ret) {
m_originalUrl.setScheme(QLatin1String("tcp"));
m_originalUrl.setHost(m_server.serverAddress().toString());
m_originalUrl.setPort(m_server.serverPort());
}
return m_server.listen(host, address.port());
return ret;
}
QAbstractSocket::SocketError TcpServerImpl::serverError() const
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment