diff options
-rw-r--r-- | src/httpserver/qabstracthttpserver.cpp | 10 | ||||
-rw-r--r-- | tests/auto/qabstracthttpserver/tst_qabstracthttpserver.cpp | 18 |
2 files changed, 19 insertions, 9 deletions
diff --git a/src/httpserver/qabstracthttpserver.cpp b/src/httpserver/qabstracthttpserver.cpp index 7a3ea58..6953cd9 100644 --- a/src/httpserver/qabstracthttpserver.cpp +++ b/src/httpserver/qabstracthttpserver.cpp @@ -221,15 +221,7 @@ void QAbstractHttpServer::bind(QTcpServer *server) */ QVector<QTcpServer *> QAbstractHttpServer::servers() const { - auto c = children(); - QVector<QTcpServer *> result; - result.reserve(c.size()); - for (auto i = c.constBegin(); i != c.constEnd(); ++i) { - if ((*i)->inherits("QTcpServer")) - result.append(static_cast<QTcpServer*>(*i)); - } - result.squeeze(); - return result; + return findChildren<QTcpServer *>().toVector(); } #if defined(QT_WEBSOCKETS_LIB) diff --git a/tests/auto/qabstracthttpserver/tst_qabstracthttpserver.cpp b/tests/auto/qabstracthttpserver/tst_qabstracthttpserver.cpp index 62dfd52..40448b9 100644 --- a/tests/auto/qabstracthttpserver/tst_qabstracthttpserver.cpp +++ b/tests/auto/qabstracthttpserver/tst_qabstracthttpserver.cpp @@ -68,6 +68,7 @@ private slots: void request(); void checkListenWarns(); void websocket(); + void servers(); }; void tst_QAbstractHttpServer::request_data() @@ -153,6 +154,23 @@ void tst_QAbstractHttpServer::websocket() delete server.nextPendingWebSocketConnection(); } +void tst_QAbstractHttpServer::servers() +{ + struct HttpServer : QAbstractHttpServer + { + bool handleRequest(const QHttpServerRequest &, QTcpSocket *) override { return true; } + } server; + auto tcpServer = new QTcpServer; + tcpServer->listen(); + server.bind(tcpServer); + auto tcpServer2 = new QTcpServer; + tcpServer2->listen(); + server.bind(tcpServer2); + QTRY_COMPARE(server.servers().count(), 2); + QTRY_COMPARE(server.servers().first(), tcpServer); + QTRY_COMPARE(server.servers().last(), tcpServer2); +} + QT_END_NAMESPACE QTEST_MAIN(tst_QAbstractHttpServer) |