me-no-dev / ESPAsyncWebServer

Async Web Server for ESP8266 and ESP32
3.7k stars 1.21k forks source link

Fix build on Arduino ESP32 v3.0.0 and IDF 5.1.1 #1349

Closed blackhack closed 11 months ago

blackhack commented 11 months ago

This fixes compilation on the latest Git version of the Arduino ESP32 core due to API changes in IDF 5.1.

Of course, these changes make ESPAsyncWebServer incompatible with prior Arduino core versions.

rel1ct commented 11 months ago

In WebAuthentication.cpp -> #ifdef ESP32 + #include "esp_idf_version.h"

if(ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 0, 0)){ mbedtls_md5_starts(&_ctx); mbedtls_md5_update(&_ctx, data, len); mbedtls_md5_finish(&_ctx, _buf); }else{ mbedtls_md5_starts_ret(&_ctx); mbedtls_md5_update_ret(&_ctx, data, len); mbedtls_md5_finish_ret(&_ctx, _buf); }

In AsyncWebSocket.cpp change

ifdef ESP8266

include "mbedtls/sha1.h"

elif ESP32

include "mbedtls/sha1.h"

include "rom/ets_sys.h"

include "esp_idf_version.h"

else

include

endif

if(ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 0, 0)){ mbedtls_sha1_starts_ret(&ctx); mbedtls_sha1_update_ret(&ctx, (const unsigned char)key.c_str(), key.length()); mbedtls_sha1_finish_ret(&ctx, hash); }else{ mbedtls_sha1_starts(&ctx); mbedtls_sha1_update(&ctx, (const unsigned char)key.c_str(), key.length()); mbedtls_sha1_finish(&ctx, hash); }