/** * @brief Create a new non-blocking TLS/SSL connection with a given "HTTP" url */ int esp_tls_conn_http_new_async(const char *url, const esp_tls_cfg_t *cfg, esp_tls_t *tls) { /* Parse URI */ struct http_parser_url u; http_parser_url_init(&u); http_parser_parse_url(url, strlen(url), 0, &u); /* Connect to host */ return esp_tls_conn_new_async(&url[u.field_data[UF_HOST].off], u.field_data[UF_HOST].len, get_port(url, &u), cfg, tls); }
static int ssl_connect_async(esp_transport_handle_t t, const char *host, int port, int timeout_ms) { transport_ssl_t *ssl = esp_transport_get_context_data(t); if (ssl->conn_state == TRANS_SSL_INIT) { ssl->cfg.timeout_ms = timeout_ms; ssl->cfg.non_block = true; ssl->ssl_initialized = true; ssl->tls = calloc(1, sizeof(esp_tls_t)); if (!ssl->tls) { return -1; } ssl->conn_state = TRANS_SSL_CONNECTING; } if (ssl->conn_state == TRANS_SSL_CONNECTING) { return esp_tls_conn_new_async(host, strlen(host), port, &ssl->cfg, ssl->tls); } return 0; }