Skip to content
This repository has been archived by the owner on Jan 21, 2025. It is now read-only.

Commit

Permalink
Merge pull request #180 from mathieucarbou/refac
Browse files Browse the repository at this point in the history
Reset connection when appropriate + some code cleanup
  • Loading branch information
mathieucarbou authored Dec 19, 2024
2 parents 5efe913 + 55fa42a commit cd882c4
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 13 deletions.
4 changes: 4 additions & 0 deletions examples/SimpleServer/SimpleServer.ino
Original file line number Diff line number Diff line change
Expand Up @@ -750,6 +750,10 @@ websocat: error running
}
});

// Reset connection on HTTP request:
// for i in {1..20}; do curl -v -X GET https://192.168.4.1:80; done;
// The heap size should not decrease over time.

#if __has_include("ArduinoJson.h")
server.addHandler(jsonHandler);
server.addHandler(msgPackHandler);
Expand Down
18 changes: 7 additions & 11 deletions src/WebRequest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ void AsyncWebServerRequest::_onData(void* buf, size_t len) {
// Check for null characters in header
if (!str[i]) {
_parseState = PARSE_REQ_FAIL;
_client->close(true);
_client->abort();
return;
}
if (str[i] == '\n') {
Expand Down Expand Up @@ -160,6 +160,8 @@ void AsyncWebServerRequest::_onData(void* buf, size_t len) {
if (!_sent) {
if (!_response)
send(501, T_text_plain, "Handler did not handle the request");
else if (!_response->_sourceValid())
send(500, T_text_plain, "Invalid data in handler");
_client->setRxTimeout(0);
_response->_respond(this);
_sent = true;
Expand Down Expand Up @@ -587,13 +589,13 @@ void AsyncWebServerRequest::_parseLine() {
if (_parseState == PARSE_REQ_START) {
if (!_temp.length()) {
_parseState = PARSE_REQ_FAIL;
_client->close();
_client->abort();
} else {
if (_parseReqHead()) {
_parseState = PARSE_REQ_HEADERS;
} else {
_parseState = PARSE_REQ_FAIL;
_client->close();
_client->abort();
}
}
return;
Expand All @@ -616,6 +618,8 @@ void AsyncWebServerRequest::_parseLine() {
if (!_sent) {
if (!_response)
send(501, T_text_plain, "Handler did not handle the request");
else if (!_response->_sourceValid())
send(500, T_text_plain, "Invalid data in handler");
_client->setRxTimeout(0);
_response->_respond(this);
_sent = true;
Expand Down Expand Up @@ -792,14 +796,6 @@ void AsyncWebServerRequest::send(AsyncWebServerResponse* response) {
if (_response)
delete _response;
_response = response;
if (_response == NULL) {
_client->close(true);
_onDisconnect();
_sent = true;
return;
}
if (!_response->_sourceValid())
send(500);
}

void AsyncWebServerRequest::redirect(const char* url, int code) {
Expand Down
3 changes: 1 addition & 2 deletions src/WebServer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,7 @@ AsyncWebServer::AsyncWebServer(uint16_t port)
c->setRxTimeout(3);
AsyncWebServerRequest* r = new AsyncWebServerRequest((AsyncWebServer*)s, c);
if (r == NULL) {
c->close(true);
c->free();
c->abort();
delete c;
}
},
Expand Down

0 comments on commit cd882c4

Please sign in to comment.