This commit avoids OOMs on an udp corner case where a delay() in the main
loop would allow memory filling.
A memory leak has been observed with such semantically forbidden delay,
unsolved yet, and preventing to use a simple counter instead of walking
through a linked list. The count limit is however small.
The method #send(int, char*, char*[, size_t])) is a virtual method which
calculates the size of the content then calls #send_P(int, PGM_P, PGM_P,
size_t). This particular implementation of #send_P differs from the other
implementations of #send and #send_P in that it uses #sendContent for
headers and always calls #sendContent_P for contents even when the
contents is not specified.
The method #sendContent is intended for body and prepends the chunksize
in chunk mode but this breaks the HTTP protocol which does not expect a
chunksize prior to the headers.
Fix is simply to do the same thing as all the other methods - call
_currentClient.write and only call #sendContent_P if there is content to
send.
Fixes#6524
Should help with speed of output when printing large flash strings to
things like a file or a TCP connection.
Use a 128 byte chunk in a temp buffer to send data using write(),
reducing the # of write calls by ~128x.
Fixes#6880
The updater was patching in the proper flashmode configuration byte for
all uploads, apps and filesystems. This ended up corrupting one byte on
every FS upload.
Change updated to only patch theflashmode if it is doing an app.
* Update PROGMEM.rst
Include array of strings in the description, since the examples in Arduino do not consider the right pointer size
* Update PROGMEM.rst
* sdk:22x191122
another firmware to test
not default: v2.2.1-119-ga0b1311 (shows as SDK:2.2.2-dev(a58da79) in debug mode)
default unchanged
* and the obj files
* help in makefile
* fix some device tests, http_server is pending
* fix webserver test, one test is disabled due to general python2->3 failure
* remove debug strings
* minimize diff
* set reset method back to the default one on generic board
* fix vcc range check from datasheet
vcc is read as 2.9V here, datasheet says 2.5-3.6, old low limit was 3v
* tell python to decode string
* Remove user_interface.h from gdbstub includes
Avoid a warning by not including the unneeded "user_interface.h" from
gdbstub.c. Leftover from original stub code from the SDK, this include
is unnecessary in the Arduino core.
* Add example to ensure gdbstub compiles in CI
Ensure the same user_interface warning doesn't occur in the future by
adding the example shown in the GDB docs to the CI build process.
* At least the F_CPU define in host mock.h is needed by host Arduino.h - need to include Arduino.h further down in mock.h for this to work.
* Geting the include order right
The FS uploader plugins need to be updated to use python3 and not
python, or they will fail on Windows (or Linux boxes without an
installed python2 interpreter).
Update the documents to point to the new versions.
This is all @dirkx , whose PR unfortunately got borked when we were
trying to update it to the new format. As @dirkx said:
When sending POST responses of well over a K - _write() may not sent it
all. Make sure we do -- but cap the individual writes - as somehow large
2-3k blobs seem to cause instability (on my 12F units).
Supercedes #2528
* EspSoftwareSerial: ctor/begin() compatibility to AVR/ESP8266/ESP32 HW release 6.2.0
* Release 6.2.1: In loopback example, explicit pin settings and for ESP32, realistic max. bps for single stop bit config.
* Loopback example can exploit new invert API in HardwareSerial
* EspSoftwareSerial 6.3.0
The eboot command was cleared from the rtc mem before the firmware copy
making it possible for a power failure during an OTA update to brick the
esp until the firmware was loaded via USB because of a partial firmware
copy that would never be restarted.
Moving the eboot_command_clear to after the copy ensures that any partial
copy is restarted at next power on.
Fixes#6811 which found an issue where connecting to scripts.google.com
would *occasionally* cause a crash. On inspection, it was found that up
to 5828 bytes of stack were used once in a while, so expand the stack to
5900 bytes to cover this case plus a little extra.
* Simple i/f to turn on inverted logic on UART0.
* Refactor invert from HardwareSerial to uart
* Final refactoring of invert bits into config bitmap.
* Overload instead of default arg for subclassing.
* Prevent unwanted effects if setting invert on other than UART0 - only that has these flags defined and documented.
Replaces abandoned #1817 and #2694
Add optional std::function callback (so it supports lambdas and normal
functions) via ::onStart, ::onEnd, ::onProgress, and ::onError methods.
Update example with their use.
From @baruch's original pull request:
The callback is called when the upgrade actually starts rather than just
the initial query so that the user can know that it will not take longer
and can also prepare for the upgrade by shutting down other works.
From @karlp's original pull request:
Incomplete: I've not updated any documentation yet. If this style looks
good, I'll happily go and update the documentation (likewise for the
examples)
* Add const char* content to ESP8266WebSerer::send()
Supercedes #3492
Allow sending raw binary data or strings directly without conversion to
a String to reduce memory overhead when possible.
From original @timw1971 PR #3492
Added public functions to allow content to be uploaded using const
char*. For some cases, this can remove the need for content to be copied
into a String, and thus can be considerably more space-efficient.
* Fix example formatting
* Make GIF example use static const array
* Make the example really need to use const char*
Make the generated GIF dynamic in the example and move the original to
PROGMEM (since that's where const arrays like this belong).
Fixes#6792
Only append the "l" to ".htm" when there actually is a ".html" file
present. If not, fall-thru like before and try .gz through the normal
paths.
* [SSDP] add `schema(Print &) const`
Supercedes #2806
Make SSDP::schema(WiFiClient&) use a by-ref (reduce stack use)
Add a SSDP::schema(Print&)
From @Palatis' original PR:
useful when using AsyncWebServer.
* Use ip.toString, only export Print& schema interface
Because WiFiClient inherits a Print interface, replace the
::schema(WiFiClient&) with ::schema(Print&) which is source compatible
with existing code and allows the functionality requested in the initial
PR.
Use ip.toString() in the templates instead of breaking up the octets of
the address.
* Fix compile errors and backwards compatibility
* Make upload.py compatible with existing FS upload
PR #6765 introduced an incompatibility with the existing Java uploaders
for SPIFFS and LittleFS, breaking them because of the upload.py
parameter format change to support single stage erase/upload.
Add in patch to silently eat the single --end and to parse the write
address and filename properly as generated by calls from the plugins,
while retaining compatibility with the current IDE changes.
* Clean upload.py, make platform use write_flash
Make upload.py more concise and pythonic.
Use the "write_flash" argument in platform.txt for uploads instead of
assuming anything that is a file is the bin to upload.
Fixes#6767 . Remove the `undef F` from SysCall.h as it is not needed
nor used in the SD or SDFS libraries. This puts F() strings back in
flash when using the SD/SDFS libs.