fix httprequest and improoved webserver

This commit is contained in:
Simon Stürz 2015-09-05 18:21:46 +02:00 committed by Michael Zanetti
parent b11206cbc8
commit 6639890fd3
2 changed files with 16 additions and 12 deletions

View File

@ -175,6 +175,7 @@ void HttpRequest::validate()
qCWarning(dcWebServer) << "Could not parse end of HTTP header (empty line between header and body):" << m_rawData;
return;
}
m_rawHeader = m_rawData.left(headerEndIndex);
m_payload = m_rawData.right(m_rawData.length() - headerEndIndex).simplified();

View File

@ -144,11 +144,6 @@ void WebServer::sendHttpReply(HttpReply *reply)
reply->packReply();
qCDebug(dcWebServer) << "respond" << reply->httpStatusCode() << reply->httpReasonPhrase();
socket->write(reply->data());
// // close the connection if wanted
// if (reply->closeConnection())
// socket->close();
}
bool WebServer::verifyFile(QSslSocket *socket, const QString &fileName)
@ -277,7 +272,7 @@ void WebServer::readClient()
HttpRequest request;
if (m_incompleteRequests.contains(socket)) {
qCWarning(dcWebServer) << "Append data to incomlete request";
qCDebug(dcWebServer) << "Append data to incomlete request";
request = m_incompleteRequests.take(socket);
request.appendData(data);
} else {
@ -338,7 +333,17 @@ void WebServer::readClient()
}
// request for a file...
if (request.method() == HttpRequest::Get && m_webinterfaceDir.exists()) {
if (request.method() == HttpRequest::Get) {
// check if the webinterface dir does exist, otherwise a filerequest is not relevant
if (!m_webinterfaceDir.exists()) {
qCWarning(dcWebServer) << "webinterface folder" << m_webinterfaceDir.path() << "does not exist.";
HttpReply *reply = RestResource::createErrorReply(HttpReply::NotFound);
reply->setClientId(clientId);
sendHttpReply(reply);
reply->deleteLater();
return;
}
QString path = fileName(request.url().path());
if (!verifyFile(socket, path))
return;
@ -362,7 +367,7 @@ void WebServer::readClient()
}
// reject everything else...
qCWarning(dcWebServer) << "Unknown message received. Respond client with 501: Not Implemented.";
qCWarning(dcWebServer) << "Unknown message received.";
HttpReply *reply = RestResource::createErrorReply(HttpReply::NotImplemented);
reply->setClientId(clientId);
sendHttpReply(reply);
@ -377,10 +382,8 @@ void WebServer::onDisconnected()
foreach (WebServerClient *client, m_webServerClients) {
if (client->address() == socket->peerAddress()) {
client->removeConnection(socket);
qCDebug(dcWebServer) << "connection count" << client->connections().count();
if (client->connections().isEmpty()) {
m_webServerClients.removeAll(client);
qCDebug(dcWebServer) << "delete client" << client->address().toString();
client->deleteLater();
}
break;
@ -411,8 +414,9 @@ void WebServer::onEncrypted()
void WebServer::onError(QAbstractSocket::SocketError error)
{
Q_UNUSED(error)
QSslSocket* socket = static_cast<QSslSocket *>(sender());
qCWarning(dcConnection) << "Client socket error" << socket->peerAddress() << error << socket->errorString();
qCWarning(dcConnection) << QString("Client socket error %1:%2 ->").arg(socket->peerAddress().toString()).arg(socket->peerPort()) << socket->errorString();
}
/*! Returns true if this \l{WebServer} started successfully. */
@ -497,5 +501,4 @@ void WebServerClient::onTimout()
socket->close();
}
}