TcpServer *TcpServerBalancer::createServer(CWsgiEngine *engine) { TcpServer *server; if (m_sslConfiguration) { #ifndef QT_NO_SSL auto sslServer = new TcpSslServer(m_serverName, m_protocol, m_wsgi, engine); sslServer->setSslConfiguration(*m_sslConfiguration); server = sslServer; #endif //QT_NO_SSL } else { server = new TcpServer(m_serverName, m_protocol, m_wsgi, engine); } connect(engine, &CWsgiEngine::shutdown, server, &TcpServer::shutdown); if (m_balancer) { connect(engine, &CWsgiEngine::started, this, [=] () { m_servers.push_back(server); resumeAccepting(); }, Qt::QueuedConnection); connect(server, &TcpServer::createConnection, server, &TcpServer::incomingConnection, Qt::QueuedConnection); } else { #ifdef Q_OS_LINUX if (m_wsgi->reusePort()) { connect(engine, &CWsgiEngine::started, this, [=] () { int socket = listenReuse(m_address, m_port, true); if (!server->setSocketDescriptor(socket)) { qFatal("Failed to set server socket descriptor, reuse-port"); } }, Qt::DirectConnection); return server; } #endif if (server->setSocketDescriptor(socketDescriptor())) { server->pauseAccepting(); connect(engine, &CWsgiEngine::started, server, &TcpServer::resumeAccepting, Qt::DirectConnection); } else { qFatal("Failed to set server socket descriptor"); } } return server; }