mirror of
https://github.com/espressif/esp-idf.git
synced 2025-10-22 10:35:39 +00:00
fix(esp_http_server): prevent concurrent access to socket used in async http requests
This commit is contained in:
committed by
David Cermak
parent
9f4b1bd471
commit
8b559ce614
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user