Merge branch 'bugfix/send_conn_close_header' into 'master'

file_serving example: Demonstrate use of connection close header from request headers

Closes IDFGH-3874

See merge request espressif/esp-idf!11922
This commit is contained in:
Mahavir Jain 2021-01-13 22:59:26 +08:00
commit 9ca00064bd
2 changed files with 15 additions and 0 deletions

View File

@ -21,4 +21,10 @@ menu "Http_File_Serving Example menu"
If this config item is set, SDMMC is used to mount the SDcard. If this config item is set, SDMMC is used to mount the SDcard.
Otherwise, will use SPI host to access and mount the SDcard. Otherwise, will use SPI host to access and mount the SDcard.
config EXAMPLE_HTTPD_CONN_CLOSE_HEADER
bool "Send connection close header from request handlers"
default y
help
If this config item is set, Connection: close header will be set in handlers.
This closes HTTP connection and frees the server socket instantly.
endmenu endmenu

View File

@ -277,6 +277,9 @@ static esp_err_t download_get_handler(httpd_req_t *req)
ESP_LOGI(TAG, "File sending complete"); ESP_LOGI(TAG, "File sending complete");
/* Respond with an empty chunk to signal HTTP response completion */ /* Respond with an empty chunk to signal HTTP response completion */
#ifdef CONFIG_EXAMPLE_HTTPD_CONN_CLOSE_HEADER
httpd_resp_set_hdr(req, "Connection", "close");
#endif
httpd_resp_send_chunk(req, NULL, 0); httpd_resp_send_chunk(req, NULL, 0);
return ESP_OK; return ESP_OK;
} }
@ -388,6 +391,9 @@ static esp_err_t upload_post_handler(httpd_req_t *req)
/* Redirect onto root to see the updated file list */ /* Redirect onto root to see the updated file list */
httpd_resp_set_status(req, "303 See Other"); httpd_resp_set_status(req, "303 See Other");
httpd_resp_set_hdr(req, "Location", "/"); httpd_resp_set_hdr(req, "Location", "/");
#ifdef CONFIG_EXAMPLE_HTTPD_CONN_CLOSE_HEADER
httpd_resp_set_hdr(req, "Connection", "close");
#endif
httpd_resp_sendstr(req, "File uploaded successfully"); httpd_resp_sendstr(req, "File uploaded successfully");
return ESP_OK; return ESP_OK;
} }
@ -429,6 +435,9 @@ static esp_err_t delete_post_handler(httpd_req_t *req)
/* Redirect onto root to see the updated file list */ /* Redirect onto root to see the updated file list */
httpd_resp_set_status(req, "303 See Other"); httpd_resp_set_status(req, "303 See Other");
httpd_resp_set_hdr(req, "Location", "/"); httpd_resp_set_hdr(req, "Location", "/");
#ifdef CONFIG_EXAMPLE_HTTPD_CONN_CLOSE_HEADER
httpd_resp_set_hdr(req, "Connection", "close");
#endif
httpd_resp_sendstr(req, "File deleted successfully"); httpd_resp_sendstr(req, "File deleted successfully");
return ESP_OK; return ESP_OK;
} }