forked from espressif/esp-idf
Fix esp_mbedtls_write API
Fix esp_wolfssl_write API Closes https://github.com/espressif/esp-idf/issues/7461
This commit is contained in:
@@ -404,6 +404,10 @@ int esp_tls_conn_http_new_async(const char *url, const esp_tls_cfg_t *cfg, esp_t
|
|||||||
* of bytes actually written to the TLS/SSL connection.
|
* of bytes actually written to the TLS/SSL connection.
|
||||||
* - <0 if write operation was not successful, because either an
|
* - <0 if write operation was not successful, because either an
|
||||||
* error occured or an action must be taken by the calling process.
|
* error occured or an action must be taken by the calling process.
|
||||||
|
* - ESP_TLS_ERR_SSL_WANT_READ/
|
||||||
|
* ESP_TLS_ERR_SSL_WANT_WRITE.
|
||||||
|
* if the handshake is incomplete and waiting for data to be available for reading.
|
||||||
|
* In this case this functions needs to be called again when the underlying transport is ready for operation.
|
||||||
*/
|
*/
|
||||||
static inline ssize_t esp_tls_conn_write(esp_tls_t *tls, const void *data, size_t datalen)
|
static inline ssize_t esp_tls_conn_write(esp_tls_t *tls, const void *data, size_t datalen)
|
||||||
{
|
{
|
||||||
|
@@ -198,10 +198,10 @@ ssize_t esp_mbedtls_write(esp_tls_t *tls, const char *data, size_t datalen)
|
|||||||
mbedtls_print_error_msg(ret);
|
mbedtls_print_error_msg(ret);
|
||||||
return ret;
|
return ret;
|
||||||
} else {
|
} else {
|
||||||
// Exitting the tls-write process as less than desired datalen are writable
|
// Exiting the tls-write process as less than desired datalen are writable
|
||||||
ESP_LOGD(TAG, "mbedtls_ssl_write() returned -0x%04X, already written %d, exitting...", -ret, written);
|
ESP_LOGD(TAG, "mbedtls_ssl_write() returned -0x%04X, already written %d, exitting...", -ret, written);
|
||||||
mbedtls_print_error_msg(ret);
|
mbedtls_print_error_msg(ret);
|
||||||
return written;
|
return (written > 0) ? written : ret;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
written += ret;
|
written += ret;
|
||||||
|
@@ -409,7 +409,7 @@ ssize_t esp_wolfssl_read(esp_tls_t *tls, char *data, size_t datalen)
|
|||||||
ssize_t esp_wolfssl_write(esp_tls_t *tls, const char *data, size_t datalen)
|
ssize_t esp_wolfssl_write(esp_tls_t *tls, const char *data, size_t datalen)
|
||||||
{
|
{
|
||||||
ssize_t ret = wolfSSL_write( (WOLFSSL *)tls->priv_ssl, (unsigned char *) data, datalen);
|
ssize_t ret = wolfSSL_write( (WOLFSSL *)tls->priv_ssl, (unsigned char *) data, datalen);
|
||||||
if (ret < 0) {
|
if (ret <= 0) {
|
||||||
int err = wolfSSL_get_error( (WOLFSSL *)tls->priv_ssl, ret);
|
int err = wolfSSL_get_error( (WOLFSSL *)tls->priv_ssl, ret);
|
||||||
if (err != WOLFSSL_ERROR_WANT_READ && err != WOLFSSL_ERROR_WANT_WRITE) {
|
if (err != WOLFSSL_ERROR_WANT_READ && err != WOLFSSL_ERROR_WANT_WRITE) {
|
||||||
ESP_INT_EVENT_TRACKER_CAPTURE(tls->error_handle, ESP_TLS_ERR_TYPE_WOLFSSL, -err);
|
ESP_INT_EVENT_TRACKER_CAPTURE(tls->error_handle, ESP_TLS_ERR_TYPE_WOLFSSL, -err);
|
||||||
|
Reference in New Issue
Block a user