HTTP Server Docs : Updated to demonstrate handling of timeout errors
This commit is contained in:
parent
6a3fa5c180
commit
a0961ad79c
1 changed files with 14 additions and 3 deletions
|
@ -29,15 +29,26 @@ Application Example
|
||||||
/* Our URI handler function to be called during POST /uri request */
|
/* Our URI handler function to be called during POST /uri request */
|
||||||
esp_err_t post_handler(httpd_req_t *req)
|
esp_err_t post_handler(httpd_req_t *req)
|
||||||
{
|
{
|
||||||
/* Read request content */
|
/* Destination buffer for content of HTTP POST request.
|
||||||
|
* httpd_req_recv() accepts char* only, but content could
|
||||||
|
* as well be any binary data (needs type casting).
|
||||||
|
* In case of string data, null termination will be absent, and
|
||||||
|
* content length would give length of string */
|
||||||
char[100] content;
|
char[100] content;
|
||||||
|
|
||||||
/* Truncate if content length larger than the buffer */
|
/* Truncate if content length larger than the buffer */
|
||||||
size_t recv_size = MIN(req->content_len, sizeof(content));
|
size_t recv_size = MIN(req->content_len, sizeof(content));
|
||||||
|
|
||||||
int ret = httpd_req_recv(req, content, recv_size);
|
int ret = httpd_req_recv(req, content, recv_size);
|
||||||
if (ret < 0) {
|
if (ret <= 0) { /* 0 return value indicates connection closed */
|
||||||
/* In case of recv error, returning ESP_FAIL will
|
/* Check if timeout occurred */
|
||||||
|
if (ret == HTTPD_SOCK_ERR_TIMEOUT) {
|
||||||
|
/* In case of timeout one can choose to retry calling
|
||||||
|
* httpd_req_recv(), but to keep it simple, here we
|
||||||
|
* respond with an HTTP 408 (Request Timeout) error */
|
||||||
|
httpd_resp_send_408(req);
|
||||||
|
}
|
||||||
|
/* In case of error, returning ESP_FAIL will
|
||||||
* ensure that the underlying socket is closed */
|
* ensure that the underlying socket is closed */
|
||||||
return ESP_FAIL;
|
return ESP_FAIL;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue