Fixes crash in AsyncWebServerRequest::arg with flash string param (eg: `request->arg(F("<arg name>"))` crashes). Solution is to call `strcpy_P` instead of `strcpy`, since the variable `p` is of type `PGM_P` and not `char *`.
* Disabled request body parsing if the handler does nothing. This will save memory and prevent crashes on large POST requests.
Signed-off-by: Alexandr Zarubkin <me21@yandex.ru>
* Marked SPIFFSEditor request handler as non-trivial, as it needs to process POST requests.
Signed-off-by: Alexandr Zarubkin <me21@yandex.ru>
Specifically: "warning: comparison between signed and unsigned integer
expressions". Make `i` the same type as `len`, which it is frequently
compared to.
Unzipped files in SPIFFS, Streams, PROGMEM strings, callback/chunked responses may have template placeholders like %TEMPLATE_VAR% inside. If callback is specified in Async...Response constructor call, it will be used to replace these with actual strings.
The prototype of callback is String(const String&), i.e. it gets variable name and returns its value.
Template variables' delimiter is currently percent sign ('%').
Maximal placeholder length is 32 chars (chosen somewhat arbitrarily, it may be stored on stack during processing). It is not guaranteed that placeholders longer than that will be processed.
Signed-off-by: Alexandr Zarubkin <me21@yandex.ru>
# Conflicts:
# src/WebResponses.cpp
* using Container instead ofdirect pointers list manipulation
* fixed different type of virtual methods.
* Fixed typo in conditional
* Renamed ListArray to LinkedList
* Const reference to String as method parameters to prevent additional copy and memory allocation when String passed by value
* fix 'min' redefinition
* removed #include <iterator>
begin/end methods it's enough for 'for( : )' loop
count() renamed to length()
spacing fixing
* Const reference to String as method parameters to prevent additional copy and memory allocation when String passed by value
* Fixed unused params warnings
so we can have server.on("/foo", HTTP_GET | HTTP_POST,
[](AsyncWebServerRequest *request) {}) to handle multiple methods.
this also saves a bit memory, enums are stored in int, which is 32bit on
xtensa. since we only have 7 methods (plus HTTP_ANY for everything) we
only want 7 bit, so uint8_t is pretty sufficient.
* New - server.rewirte() to rewrite the request url with optional get parameters injection.
New - rewrite.setFilter() and handler.setFilter() to specify a filter callback for more control on when to include them.
New - static file handler can be set with Last-Modified header value to support Not-Modified (304) response instead of serving the actual file.
* Remove clearRewrites & clearHandlers from server.mplement server distractor to delete internal members. Fixed and improved gzip stats calculation.
* HTTP 302 and 304 Support
Add support for http redirection (302) and http not modified (304) to
reduce the load the server.
server.redirect(“url”, “location”, exclude-ip) will respond with 302 to
redirect the browser to a different url, this is useful for backward
compatibility and to redirect call to CDN when not no AP mode.
server.serveStatic has a new optional parameter to get the
Last-Modified date for all files serve for this location, when the
browser request have the same If-Modified-Since header value, the
server respond with 304 code instead of serving the file.
* First round of performance improvements.
* Merge remote-tracking branch 'me-no-dev/master' into performance
# Conflicts:
# src/WebHandlerImpl.h
# src/WebHandlers.cpp
* use of sprintf
* Remove sections not related.
* Fix a bug to serve a file in directory (e.g. serverStatic("/", SPIFFS, "/index.html");
* HTTP 302 and 304 Support
Add support for http redirection (302) and http not modified (304) to
reduce the load the server.
server.redirect(“url”, “location”, exclude-ip) will respond with 302 to
redirect the browser to a different url, this is useful for backward
compatibility and to redirect call to CDN when not no AP mode.
server.serveStatic has a new optional parameter to get the
Last-Modified date for all files serve for this location, when the
browser request have the same If-Modified-Since header value, the
server respond with 304 code instead of serving the file.
* First round of performance improvements.
* Merge remote-tracking branch 'me-no-dev/master' into performance
# Conflicts:
# src/WebHandlerImpl.h
# src/WebHandlers.cpp
* use of sprintf
* Remove sections not related.