From ba15970abbec43ff54c843ad859ad159a36d3a01 Mon Sep 17 00:00:00 2001 From: Siarhei Volkau Date: Mon, 15 Mar 2021 19:36:57 +0530 Subject: [PATCH] esp_http_server, protocomm: Consider a connection as closed if recv() returns 0 This check prevents infinite loop on closed sockets Closes https://github.com/espressif/esp-idf/pull/6541 Signed-off-by: Shubham Kulkarni --- components/esp_http_server/src/httpd_parse.c | 2 +- components/protocomm/src/transports/protocomm_httpd.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/components/esp_http_server/src/httpd_parse.c b/components/esp_http_server/src/httpd_parse.c index 56fbf905ec..9fe7907591 100644 --- a/components/esp_http_server/src/httpd_parse.c +++ b/components/esp_http_server/src/httpd_parse.c @@ -802,7 +802,7 @@ esp_err_t httpd_req_delete(struct httpd_data *hd) char dummy[CONFIG_HTTPD_PURGE_BUF_LEN]; int recv_len = MIN(sizeof(dummy), ra->remaining_len); recv_len = httpd_req_recv(r, dummy, recv_len); - if (recv_len < 0) { + if (recv_len <= 0) { httpd_req_cleanup(r); return ESP_FAIL; } diff --git a/components/protocomm/src/transports/protocomm_httpd.c b/components/protocomm/src/transports/protocomm_httpd.c index abad8d4f24..535f5cf851 100644 --- a/components/protocomm/src/transports/protocomm_httpd.c +++ b/components/protocomm/src/transports/protocomm_httpd.c @@ -136,7 +136,7 @@ static esp_err_t common_post_handler(httpd_req_t *req) size_t recv_size = 0; while (recv_size < req->content_len) { ret = httpd_req_recv(req, req_body + recv_size, req->content_len - recv_size); - if (ret < 0) { + if (ret <= 0) { ret = ESP_FAIL; goto out; }