From 40798867042a24ddbebfcee37c90fae158bd48b6 Mon Sep 17 00:00:00 2001 From: krzychb Date: Mon, 11 Sep 2017 05:15:39 +0200 Subject: [PATCH] Added socket receiving timeout, ref. TW#14353 / GitHub issue #844 --- .../http_request/main/http_request_example_main.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/examples/protocols/http_request/main/http_request_example_main.c b/examples/protocols/http_request/main/http_request_example_main.c index be3bb9e36..c51205e82 100644 --- a/examples/protocols/http_request/main/http_request_example_main.c +++ b/examples/protocols/http_request/main/http_request_example_main.c @@ -132,7 +132,7 @@ static void http_get_task(void *pvParameters) vTaskDelay(1000 / portTICK_PERIOD_MS); continue; } - ESP_LOGI(TAG, "... allocated socket\r\n"); + ESP_LOGI(TAG, "... allocated socket"); if(connect(s, res->ai_addr, res->ai_addrlen) != 0) { ESP_LOGE(TAG, "... socket connect failed errno=%d", errno); @@ -153,6 +153,18 @@ static void http_get_task(void *pvParameters) } ESP_LOGI(TAG, "... socket send success"); + struct timeval receiving_timeout; + receiving_timeout.tv_sec = 5; + receiving_timeout.tv_usec = 0; + if (setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, &receiving_timeout, + sizeof(receiving_timeout)) < 0) { + ESP_LOGE(TAG, "... failed to set socket receiving timeout"); + close(s); + vTaskDelay(4000 / portTICK_PERIOD_MS); + continue; + } + ESP_LOGI(TAG, "... set socket receiving timeout success"); + /* Read HTTP response */ do { bzero(recv_buf, sizeof(recv_buf));