My code is based on
code example\examples\protocols\https_mbedtls
Code: Select all
ESP_LOGI(TAG, "Writing HTTP request...");
size_t written_bytes = 0;
size_t request_size = strlen(https_request.request);
do {
ret = mbedtls_ssl_write(&ssl,
(const unsigned char *)https_request.request + written_bytes,
request_size - written_bytes
);
if (ret >= 0) {
ESP_LOGI(TAG, "%d bytes written", ret);
written_bytes += ret;
} else if (ret != MBEDTLS_ERR_SSL_WANT_WRITE &&
ret != MBEDTLS_ERR_SSL_WANT_READ) {
ESP_LOGE(TAG, "mbedtls_ssl_write returned -0x%x", -ret);
ret = HTTPS_SOCK_ERR;
goto exit;
}
} while(written_bytes < request_size);
ESP_LOGI(TAG, "Reading HTTP response...");
char *rcv_buf = malloc(WEB_RECEIVE_BUF_MAX);
https_responce_t rcv_data;
do {
ret = mbedtls_ssl_read(
&ssl,
(unsigned char *)rcv_buf,
https_request.responce_max_len
);
if(ret > 0) {
ESP_LOGI(TAG, "recieved %d bytes", ret);
memcpy(rcv_data.responce, rcv_buf, ret);
rcv_data.lenght = ret;
if(xQueueSend(https_responce_queue, &rcv_data,
500 / portTICK_PERIOD_MS) == pdFALSE) {
break;
}
}
if(ret == MBEDTLS_ERR_SSL_WANT_READ ||
ret == MBEDTLS_ERR_SSL_WANT_WRITE
)
continue;
if(ret == MBEDTLS_ERR_SSL_PEER_CLOSE_NOTIFY) {
ret = 0;
break;
}
if(ret < 0)
{
ESP_LOGE(TAG, "mbedtls_ssl_read returned -0x%x", -ret);
break;
}
if(ret == 0)
{
ESP_LOGI(TAG, "connection closed");
break;
}
len = ret;
ESP_LOGD(TAG, "%d bytes read", len);
} while(1);
Request is
But 3th request - image download (it's about 70Kb size, i even try to smaller pictures - 4Kb), catch only first packets of data and returns -0x7100 or -0x4C error"GET /test_img.png HTTP/1.1\r\nHost: [project_name].herokuapp.com\r\nConnection: keep-alive\r\n\r\n"
Code: Select all
I (325397) HTTPS: SSL Seting hostname: [project_name].herokuapp.com
I (325404) HTTPS: Connecting to [project_name].herokuapp.com:443...
I (325600) HTTPS: Connected.
I (325601) HTTPS: Performing the SSL/TLS handshake...
I (327144) HTTPS: Verifying peer X.509 certificate...
I (327144) HTTPS: Certificate verified.
I (327145) HTTPS: Cipher suite is TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256
I (327151) HTTPS: heap = 71728
I (327154) HTTPS: Writing HTTP request...
I (327162) HTTPS: 92 bytes written
I (327163) HTTPS: Reading HTTP response...
I (327351) HTTPS: recieved 1022 bytes
I (327352) HTTPS: recieved 9 bytes
E (327546) HTTPS: mbedtls_ssl_read returned -0x7100
I (328102) REQUESTS: total recieved 1031 bytes
I (328103) WIFI_CONF: disconnect
0x7100 SSL - Bad input parameters to function
0x004C NET - Reading information from the socket failed
And even no data recieved error
Code: Select all
I (25061) HTTPS: heap = 72192
I (25064) HTTPS: Writing HTTP request...
I (25070) HTTPS: 92 bytes written
I (25073) HTTPS: Reading HTTP response...
E (25352) HTTPS: mbedtls_ssl_read returned -0x7100
E (33235) REQUESTS: failed to receive first packet
I (33235) WIFI_CONF: disconnect