mirror of
https://github.com/espressif/ESP8266_RTOS_SDK.git
synced 2025-07-17 19:13:52 +08:00
feat(esp_tls): Fix a bug of esp_tls when work on no-block mode
This commit is contained in:
@ -80,6 +80,8 @@ static ssize_t tls_read(esp_tls_t *tls, char *data, size_t datalen)
|
|||||||
}
|
}
|
||||||
if (ret != MBEDTLS_ERR_SSL_WANT_READ && ret != MBEDTLS_ERR_SSL_WANT_WRITE) {
|
if (ret != MBEDTLS_ERR_SSL_WANT_READ && ret != MBEDTLS_ERR_SSL_WANT_WRITE) {
|
||||||
ESP_LOGE(TAG, "read error :%d:", ret);
|
ESP_LOGE(TAG, "read error :%d:", ret);
|
||||||
|
} else {
|
||||||
|
ret = (ret == MBEDTLS_ERR_SSL_WANT_READ) ? ESP_TLS_ERROR_WANT_READ : ESP_TLS_ERROR_WANT_WRITE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#elif CONFIG_SSL_USING_WOLFSSL
|
#elif CONFIG_SSL_USING_WOLFSSL
|
||||||
@ -94,6 +96,8 @@ static ssize_t tls_read(esp_tls_t *tls, char *data, size_t datalen)
|
|||||||
|
|
||||||
if (ret != WOLFSSL_ERROR_WANT_READ && ret != WOLFSSL_ERROR_WANT_WRITE) {
|
if (ret != WOLFSSL_ERROR_WANT_READ && ret != WOLFSSL_ERROR_WANT_WRITE) {
|
||||||
ESP_LOGE(TAG, "read error :%d:", ret);
|
ESP_LOGE(TAG, "read error :%d:", ret);
|
||||||
|
} else {
|
||||||
|
ret = (ret == WOLFSSL_ERROR_WANT_READ) ? ESP_TLS_ERROR_WANT_READ : ESP_TLS_ERROR_WANT_WRITE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -481,14 +485,19 @@ static ssize_t tls_write(esp_tls_t *tls, const char *data, size_t datalen)
|
|||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
if (ret != MBEDTLS_ERR_SSL_WANT_READ && ret != MBEDTLS_ERR_SSL_WANT_WRITE) {
|
if (ret != MBEDTLS_ERR_SSL_WANT_READ && ret != MBEDTLS_ERR_SSL_WANT_WRITE) {
|
||||||
ESP_LOGE(TAG, "write error :%d:", ret);
|
ESP_LOGE(TAG, "write error :%d:", ret);
|
||||||
|
} else {
|
||||||
|
ret = (ret == MBEDTLS_ERR_SSL_WANT_READ) ? ESP_TLS_ERROR_WANT_READ : ESP_TLS_ERROR_WANT_WRITE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
#elif CONFIG_SSL_USING_WOLFSSL
|
#elif CONFIG_SSL_USING_WOLFSSL
|
||||||
ssize_t ret = wolfSSL_write(tls->ssl, (unsigned char*) data, datalen);
|
ssize_t ret = wolfSSL_write(tls->ssl, (unsigned char*) data, datalen);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
|
ret = wolfSSL_get_error(tls->ssl, ret);
|
||||||
if (ret != WOLFSSL_ERROR_WANT_READ && ret != WOLFSSL_ERROR_WANT_WRITE) {
|
if (ret != WOLFSSL_ERROR_WANT_READ && ret != WOLFSSL_ERROR_WANT_WRITE) {
|
||||||
ESP_LOGE(TAG, "write error :%d:", ret);
|
ESP_LOGE(TAG, "write error :%d:", ret);
|
||||||
|
} else {
|
||||||
|
ret = (ret == WOLFSSL_ERROR_WANT_READ) ? ESP_TLS_ERROR_WANT_READ : ESP_TLS_ERROR_WANT_WRITE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -35,6 +35,11 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
ESP_TLS_ERROR_WANT_READ = -2,
|
||||||
|
ESP_TLS_ERROR_WANT_WRITE = -3,
|
||||||
|
} esp_tls_error_t;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief ESP-TLS Connection State
|
* @brief ESP-TLS Connection State
|
||||||
*/
|
*/
|
||||||
|
Reference in New Issue
Block a user