mirror of
https://github.com/QuasarApp/qthttpserver.git
synced 2025-04-26 18:34:31 +00:00
Fix crash when CONNECT method is used
When the parser received "CONNECT / HTTP/1.1\n\n", its upgrade variable is set to 1 even though there is no "upgrade" header available. In this case, QMap::find() returns its end. Task-number: QTBUG-82053 Change-Id: I41cc23511459c6735a474bb7b903638dd4b1208f Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
This commit is contained in:
parent
bf9bb2acb6
commit
4b87afbbe6
@ -116,8 +116,8 @@ void QAbstractHttpServerPrivate::handleReadyRead(QTcpSocket *socket,
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
qCWarning(lcHttpServer, "Upgrade to %s not supported", it.value().second.constData());
|
||||
}
|
||||
qCWarning(lcHttpServer, "Upgrade to %s not supported", it.value().second.constData());
|
||||
socket->disconnectFromHost();
|
||||
return;
|
||||
}
|
||||
|
@ -62,6 +62,7 @@ private slots:
|
||||
void websocket();
|
||||
void servers();
|
||||
void fork();
|
||||
void qtbug82053();
|
||||
};
|
||||
|
||||
void tst_QAbstractHttpServer::request_data()
|
||||
@ -244,6 +245,24 @@ void tst_QAbstractHttpServer::fork()
|
||||
#endif
|
||||
}
|
||||
|
||||
void tst_QAbstractHttpServer::qtbug82053()
|
||||
{
|
||||
struct HttpServer : QAbstractHttpServer
|
||||
{
|
||||
bool handleRequest(const QHttpServerRequest &, QTcpSocket *) override { return false; }
|
||||
} server;
|
||||
auto tcpServer = new QTcpServer;
|
||||
tcpServer->listen();
|
||||
server.bind(tcpServer);
|
||||
|
||||
auto client = new QTcpSocket;
|
||||
client->connectToHost(QHostAddress::LocalHost, tcpServer->serverPort());
|
||||
client->waitForConnected();
|
||||
client->write("CONNECT / HTTP/1.1\n\n");
|
||||
client->waitForBytesWritten();
|
||||
QTest::qWait(0);
|
||||
}
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
QTEST_MAIN(tst_QAbstractHttpServer)
|
||||
|
Loading…
x
Reference in New Issue
Block a user