From 728a686b8a7309d16fc6293f7aec69fc9442442f Mon Sep 17 00:00:00 2001 From: Laukik Hase Date: Thu, 24 Mar 2022 13:57:52 +0530 Subject: [PATCH] protocols: Updated examples to use correct API - `http_request` and `https_x509_bundle` --- .../main/https_request_example_main.c | 38 ++++++++++--------- .../main/https_x509_bundle_example_main.c | 15 +++++--- 2 files changed, 30 insertions(+), 23 deletions(-) diff --git a/examples/protocols/https_request/main/https_request_example_main.c b/examples/protocols/https_request/main/https_request_example_main.c index 86ba9ff464..01c40c04c1 100644 --- a/examples/protocols/https_request/main/https_request_example_main.c +++ b/examples/protocols/https_request/main/https_request_example_main.c @@ -1,11 +1,12 @@ -/* HTTPS GET Example using plain mbedTLS sockets +/* + * HTTPS GET Example using plain Mbed TLS sockets * * Contacts the howsmyssl.com API via TLS v1.2 and reads a JSON * response. * - * Adapted from the ssl_client1 example in mbedtls. + * Adapted from the ssl_client1 example in Mbed TLS. * - * SPDX-FileCopyrightText: 2006-2016 ARM Limited, All Rights Reserved + * SPDX-FileCopyrightText: The Mbed TLS Contributors * * SPDX-License-Identifier: Apache-2.0 * @@ -91,13 +92,17 @@ static void https_get_request(esp_tls_cfg_t cfg, const char *WEB_SERVER_URL, con char buf[512]; int ret, len; - struct esp_tls *tls = esp_tls_conn_http_new(WEB_SERVER_URL, &cfg); + esp_tls_t *tls = esp_tls_init(); + if (!tls) { + ESP_LOGE(TAG, "Failed to allocate esp_tls handle!"); + goto exit; + } - if (tls != NULL) { + if (esp_tls_conn_http_new_sync(WEB_SERVER_URL, &cfg, tls) == 1) { ESP_LOGI(TAG, "Connection established..."); } else { ESP_LOGE(TAG, "Connection failed..."); - goto exit; + goto cleanup; } #ifdef CONFIG_EXAMPLE_CLIENT_SESSION_TICKETS @@ -107,6 +112,7 @@ static void https_get_request(esp_tls_cfg_t cfg, const char *WEB_SERVER_URL, con tls_client_session = esp_tls_get_client_session(tls); } #endif + size_t written_bytes = 0; do { ret = esp_tls_conn_write(tls, @@ -117,27 +123,22 @@ static void https_get_request(esp_tls_cfg_t cfg, const char *WEB_SERVER_URL, con written_bytes += ret; } else if (ret != ESP_TLS_ERR_SSL_WANT_READ && ret != ESP_TLS_ERR_SSL_WANT_WRITE) { ESP_LOGE(TAG, "esp_tls_conn_write returned: [0x%02X](%s)", ret, esp_err_to_name(ret)); - goto exit; + goto cleanup; } } while (written_bytes < strlen(REQUEST)); ESP_LOGI(TAG, "Reading HTTP response..."); - do { len = sizeof(buf) - 1; - bzero(buf, sizeof(buf)); + memset(buf, 0x00, sizeof(buf)); ret = esp_tls_conn_read(tls, (char *)buf, len); if (ret == ESP_TLS_ERR_SSL_WANT_WRITE || ret == ESP_TLS_ERR_SSL_WANT_READ) { continue; - } - - if (ret < 0) { + } else if (ret < 0) { ESP_LOGE(TAG, "esp_tls_conn_read returned [-0x%02X](%s)", -ret, esp_err_to_name(ret)); break; - } - - if (ret == 0) { + } else if (ret == 0) { ESP_LOGI(TAG, "connection closed"); break; } @@ -151,8 +152,9 @@ static void https_get_request(esp_tls_cfg_t cfg, const char *WEB_SERVER_URL, con putchar('\n'); // JSON output doesn't have a newline at end } while (1); -exit: +cleanup: esp_tls_conn_destroy(tls); +exit: for (int countdown = 10; countdown >= 0; countdown--) { ESP_LOGI(TAG, "%d...", countdown); vTaskDelay(1000 / portTICK_PERIOD_MS); @@ -251,7 +253,7 @@ static void https_request_task(void *pvparameters) #if CONFIG_MBEDTLS_CERTIFICATE_BUNDLE https_get_request_using_crt_bundle(); #endif - printf("Minimum free heap size: %d bytes\n", esp_get_minimum_free_heap_size()); + ESP_LOGI(TAG, "Minimum free heap size: %d bytes", esp_get_minimum_free_heap_size()); https_get_request_using_cacert_buf(); https_get_request_using_global_ca_store(); ESP_LOGI(TAG, "Finish https_request example"); @@ -260,7 +262,7 @@ static void https_request_task(void *pvparameters) void app_main(void) { - ESP_ERROR_CHECK( nvs_flash_init() ); + ESP_ERROR_CHECK(nvs_flash_init()); ESP_ERROR_CHECK(esp_netif_init()); ESP_ERROR_CHECK(esp_event_loop_create_default()); diff --git a/examples/protocols/https_x509_bundle/main/https_x509_bundle_example_main.c b/examples/protocols/https_x509_bundle/main/https_x509_bundle_example_main.c index 7521f30638..966aa8173e 100644 --- a/examples/protocols/https_x509_bundle/main/https_x509_bundle_example_main.c +++ b/examples/protocols/https_x509_bundle/main/https_x509_bundle_example_main.c @@ -56,16 +56,20 @@ static void https_get_task(void *pvParameters) { while (1) { int conn_count = 0; - ESP_LOGI(TAG, "Connecting to %d URLs", MAX_URLS); + for (int i = 0; i < MAX_URLS; i++) { esp_tls_cfg_t cfg = { .crt_bundle_attach = esp_crt_bundle_attach, }; - struct esp_tls *tls = esp_tls_conn_http_new(web_urls[i], &cfg); + esp_tls_t *tls = esp_tls_init(); + if (!tls) { + ESP_LOGE(TAG, "Failed to allocate esp_tls handle!"); + goto end; + } - if (tls != NULL) { + if (esp_tls_conn_http_new_sync(web_urls[i], &cfg, tls) == 1) { ESP_LOGI(TAG, "Connection established to %s", web_urls[i]); conn_count++; } else { @@ -73,6 +77,7 @@ static void https_get_task(void *pvParameters) } esp_tls_conn_destroy(tls); +end: vTaskDelay(1000 / portTICK_PERIOD_MS); } @@ -83,8 +88,8 @@ static void https_get_task(void *pvParameters) void app_main(void) { - ESP_ERROR_CHECK( nvs_flash_init() ); - esp_netif_init(); + ESP_ERROR_CHECK(nvs_flash_init()); + ESP_ERROR_CHECK(esp_netif_init()); ESP_ERROR_CHECK(esp_event_loop_create_default()); /* This helper function configures Wi-Fi or Ethernet, as selected in menuconfig.