]> granicus.if.org Git - esp-idf/commitdiff
Added socket receiving timeout, ref. TW#14353 / GitHub issue #844
authorkrzychb <krzychb@gazeta.pl>
Mon, 11 Sep 2017 03:15:39 +0000 (05:15 +0200)
committerkrzychb <krzychb@gazeta.pl>
Mon, 11 Sep 2017 03:15:39 +0000 (05:15 +0200)
examples/protocols/http_request/main/http_request_example_main.c

index be3bb9e364b47f076f2d0ede52f0349d3dcec8b0..c51205e8219acda4d64398251dc9fa3932fab8ce 100644 (file)
@@ -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));