Merge branch 'bugfix/http_client_enhanced' into 'master'
esp_http_client: Resolve some bugs from the github community See merge request idf/esp-idf!2831
This commit is contained in:
commit
b5db59ec31
3 changed files with 16 additions and 8 deletions
|
@ -759,6 +759,9 @@ int esp_http_client_read(esp_http_client_handle_t client, char *buffer, int len)
|
||||||
esp_err_t esp_http_client_perform(esp_http_client_handle_t client)
|
esp_err_t esp_http_client_perform(esp_http_client_handle_t client)
|
||||||
{
|
{
|
||||||
esp_err_t err;
|
esp_err_t err;
|
||||||
|
if (client == NULL) {
|
||||||
|
return ESP_ERR_INVALID_ARG;
|
||||||
|
}
|
||||||
do {
|
do {
|
||||||
if ((err = esp_http_client_open(client, client->post_len)) != ESP_OK) {
|
if ((err = esp_http_client_open(client, client->post_len)) != ESP_OK) {
|
||||||
return err;
|
return err;
|
||||||
|
@ -849,6 +852,11 @@ esp_err_t esp_http_client_open(esp_http_client_handle_t client, int write_len)
|
||||||
client->transport = transport_list_get_transport(client->transport_list, client->connection_info.scheme);
|
client->transport = transport_list_get_transport(client->transport_list, client->connection_info.scheme);
|
||||||
if (client->transport == NULL) {
|
if (client->transport == NULL) {
|
||||||
ESP_LOGE(TAG, "No transport found");
|
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;
|
return ESP_ERR_HTTP_INVALID_TRANSPORT;
|
||||||
}
|
}
|
||||||
if (transport_connect(client->transport, client->connection_info.host, client->connection_info.port, client->timeout_ms) < 0) {
|
if (transport_connect(client->transport, client->connection_info.host, client->connection_info.port, client->timeout_ms) < 0) {
|
||||||
|
|
|
@ -136,15 +136,15 @@ char *http_auth_basic(const char *username, const char *password)
|
||||||
{
|
{
|
||||||
int out;
|
int out;
|
||||||
char *user_info = NULL;
|
char *user_info = NULL;
|
||||||
char *digest = calloc(1, MD5_MAX_LEN + 7);
|
char *digest = NULL;
|
||||||
HTTP_MEM_CHECK(TAG, digest, goto _basic_exit);
|
size_t n = 0;
|
||||||
asprintf(&user_info, "%s:%s", username, password);
|
asprintf(&user_info, "%s:%s", username, password);
|
||||||
HTTP_MEM_CHECK(TAG, user_info, goto _basic_exit);
|
HTTP_MEM_CHECK(TAG, user_info, return NULL);
|
||||||
if (user_info == NULL) {
|
mbedtls_base64_encode(NULL, 0, &n, (const unsigned char *)user_info, strlen(user_info));
|
||||||
goto _basic_exit;
|
digest = calloc(1, 6 + n + 1);
|
||||||
}
|
HTTP_MEM_CHECK(TAG, digest, goto _basic_exit);
|
||||||
strcpy(digest, "Basic ");
|
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:
|
_basic_exit:
|
||||||
free(user_info);
|
free(user_info);
|
||||||
return digest;
|
return digest;
|
||||||
|
|
|
@ -296,7 +296,7 @@ static void http_download_chunk()
|
||||||
|
|
||||||
static void http_perform_as_stream_reader()
|
static void http_perform_as_stream_reader()
|
||||||
{
|
{
|
||||||
char *buffer = malloc(MAX_HTTP_RECV_BUFFER);
|
char *buffer = malloc(MAX_HTTP_RECV_BUFFER + 1);
|
||||||
if (buffer == NULL) {
|
if (buffer == NULL) {
|
||||||
ESP_LOGE(TAG, "Cannot malloc http receive buffer");
|
ESP_LOGE(TAG, "Cannot malloc http receive buffer");
|
||||||
return;
|
return;
|
||||||
|
|
Loading…
Reference in a new issue