fix(esp_http_server): prevent concurrent access to socket used in async http requests

This commit is contained in:
Friedolin Gröger
2024-07-16 10:46:50 +02:00
committed by David Cermak
parent 9f4b1bd471
commit 8b559ce614
3 changed files with 12 additions and 4 deletions

View File

@@ -55,7 +55,7 @@ static esp_err_t httpd_accept_conn(struct httpd_data *hd, int listen_fd)
if (!httpd_is_sess_available(hd)) {
/* Queue asynchronous closure of the least recently used session */
return httpd_sess_close_lru(hd);
/* Returning from this allowes the main server thread to process
/* Returning from this allows the main server thread to process
* the queued asynchronous control message for closing LRU session.
* Since connection request hasn't been addressed yet using accept()
* therefore httpd_accept_conn() will be called again, but this time
@@ -254,6 +254,11 @@ static int httpd_process_session(struct sock_db *session, void *context)
return 1;
}
// session is busy in an async task, do not process here.
if (session->for_async_req) {
return 1;
}
process_session_context_t *ctx = (process_session_context_t *)context;
int fd = session->fd;