]> granicus.if.org Git - esp-idf/commitdiff
esp_http_client: Fix crash in async mode
authorJitin George <jitin@espressif.com>
Wed, 24 Oct 2018 07:32:47 +0000 (13:02 +0530)
committerbot <bot@espressif.com>
Tue, 30 Oct 2018 09:58:57 +0000 (09:58 +0000)
Closes https://github.com/espressif/esp-idf/issues/2624

components/esp_http_client/esp_http_client.c
components/esp_http_client/include/esp_http_client.h
components/tcp_transport/transport.c

index 27181f3ec15cd82d9d2ea6c63ad6445c87fa62d4..81e54b7e06dfa1f8468dc0729b18a1f9500fd184 100644 (file)
@@ -943,6 +943,10 @@ static esp_err_t esp_http_client_connect(esp_http_client_handle_t client)
             int ret = esp_transport_connect_async(client->transport, client->connection_info.host, client->connection_info.port, client->timeout_ms);
             if (ret == ASYNC_TRANS_CONNECT_FAIL) {
                 ESP_LOGE(TAG, "Connection failed");
+                if (strcasecmp(client->connection_info.scheme, "http") == 0) {
+                    ESP_LOGE(TAG, "Asynchronous mode doesn't work for HTTP based connection");
+                    return ESP_ERR_INVALID_ARG;
+                }
                 return ESP_ERR_HTTP_CONNECT;
             } else if (ret == ASYNC_TRANS_CONNECTING) {
                 ESP_LOGD(TAG, "Connection not yet established");
index b3b40ca0dc817e83fbf16ef4956830c82a9721ed..4e940a6d10a771fd8e6abea74300ccc91032add2 100644 (file)
@@ -114,7 +114,7 @@ typedef struct {
     esp_http_client_transport_t transport_type;           /*!< HTTP transport type, see `esp_http_client_transport_t` */
     int                         buffer_size;              /*!< HTTP buffer size (both send and receive) */
     void                        *user_data;               /*!< HTTP user_data context */
-    bool                        is_async;                 /*!< Set asynchronous mode */
+    bool                        is_async;                 /*!< Set asynchronous mode, only supported with HTTPS for now */
 } esp_http_client_config_t;
 
 
index 5c2f913fe96a052482e2775b61f87b2606e99937..f6fa311ae7ecbb24936a8deb1c982d7b036d1134 100644 (file)
@@ -156,7 +156,7 @@ int esp_transport_connect(esp_transport_handle_t t, const char *host, int port,
 int esp_transport_connect_async(esp_transport_handle_t t, const char *host, int port, int timeout_ms)
 {
     int ret = -1;
-    if (t && t->_connect) {
+    if (t && t->_connect_async) {
         return t->_connect_async(t, host, port, timeout_ms);
     }
     return ret;