Merge pull request #3306 from csutcliff/pr/upload-406-response

fix(upload): send the 406 response for a rejected upload
This commit is contained in:
Proddy
2026-10-19 22:45:27 +02:00
committed by GitHub
2 changed files with 3 additions and 10 deletions
+1
View File
@@ -60,6 +60,7 @@ This release is based on the latest Espressif/Arduino core version 3. It brings
- Guru Meditation (cache error) on HybridCompile builds when the EMS or console UART ISR ran from flash during a SPI flash read (WiFi power-down, mDNS, NVS). The UART ISR and ringbuf ISR helpers are now in IRAM
- compile errors against Arduino 3.3.12 from Tasmota/Arduino headers named `console.h`, `network.h` and `httpClient.h`. Those EMS-ESP headers are now `emsesp_console.h`, `emsesp_network.h` and `emsesp_http_client.h`
- HTTP OTA from WSL/mDNS stalled on IPv6 and used tiny write chunks. Uploads now resolve IPv4 and stream in 64 KB blocks (`scripts/upload.py`, `scripts/upload_cli.py`)
- a rejected upload (an invalid MD5 file, an unsupported file type) got no HTTP response: the connection was closed before the 406 was written, so `curl` reported "Empty reply from server". The 406 is now sent once the upload has been received
## Changed
+2 -10
View File
@@ -252,16 +252,8 @@ void UploadFileService::handleError(AsyncWebServerRequest * request, int code) {
emsesp::EMSESP::system_.uart_init(); // re-enable UART
_ota.abort();
// 406: the client sent a file we won't accept. Close now so the browser fails fast.
// Other codes wait for uploadComplete() to send, so we don't destroy the request mid-stream.
if (code == 406) {
request->send(request->beginResponse(code));
_response_sent = true;
request->client()->close();
_is_firmware = false;
_is_filesystem = false;
_is_recovery = false;
}
// uploadComplete() sends the error code. The web server only writes a response once the whole body has
// arrived, so closing the connection here to fail fast would lose the response.
// if we aborted a filesystem upload, remount LittleFS so the device keeps working
if (_is_filesystem) {