esp_err_t esp_http_client_perform(esp_http_client_handle_t client)
{
esp_err_t err;
+ if (client == NULL) {
+ return ESP_ERR_INVALID_ARG;
+ }
do {
if ((err = esp_http_client_open(client, client->post_len)) != ESP_OK) {
return err;
client->transport = transport_list_get_transport(client->transport_list, client->connection_info.scheme);
if (client->transport == NULL) {
ESP_LOGE(TAG, "No transport found");
+#ifndef CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS
+ if (strcasecmp(client->connection_info.scheme, "https") == 0) {
+ ESP_LOGE(TAG, "Please enable HTTPS at menuconfig to allow requesting via https");
+ }
+#endif
return ESP_ERR_HTTP_INVALID_TRANSPORT;
}
if (transport_connect(client->transport, client->connection_info.host, client->connection_info.port, client->timeout_ms) < 0) {
{
int out;
char *user_info = NULL;
- char *digest = calloc(1, MD5_MAX_LEN + 7);
- HTTP_MEM_CHECK(TAG, digest, goto _basic_exit);
+ char *digest = NULL;
+ size_t n = 0;
asprintf(&user_info, "%s:%s", username, password);
- HTTP_MEM_CHECK(TAG, user_info, goto _basic_exit);
- if (user_info == NULL) {
- goto _basic_exit;
- }
+ HTTP_MEM_CHECK(TAG, user_info, return NULL);
+ mbedtls_base64_encode(NULL, 0, &n, (const unsigned char *)user_info, strlen(user_info));
+ digest = calloc(1, 6 + n + 1);
+ HTTP_MEM_CHECK(TAG, digest, goto _basic_exit);
strcpy(digest, "Basic ");
- mbedtls_base64_encode((unsigned char *)digest + 6, MD5_MAX_LEN, (size_t *)&out, (const unsigned char *)user_info, strlen(user_info));
+ mbedtls_base64_encode((unsigned char *)digest + 6, n, (size_t *)&out, (const unsigned char *)user_info, strlen(user_info));
_basic_exit:
free(user_info);
return digest;