Releases: cesanta/mongoose
7.15
Overview
This release adds fixes and improvements, and more examples.
Important Changes
- Improved TLS handling
- Added support for MTLS and Chacha20
- Added support for NXP FRDM-MCXN947
- Reinstated
mg_strdup()
, previously deprecated in 7.14 - POSIX FS is now disabled by default, except on Linux, Mac, Windows. Define
MG_ENABLE_POSIX_FS=1
to enable it in another architectures
Minor changes
- Improved HTTP handling of connection closing and pipelined requests
- Added support for 10/100 detection in Infineon XMC7 driver
- Added support for obtaining DNS and SNTP servers via DHCP. See usage example here
- Added
mg_now()
to get current time as obtained via SNTP. See docs here - Updated support for the latest version of the Zephyr project
- Updated support for the latest version of FreeRTOS+TCP
- Updated support for more recent versions of OpenSSL
- uECC can now be built with VLI
- Added more embedded examples
- Improved test coverage
Mongoose 7.14
Overview
This release adds fixes and improvements, and more examples.
Important Changes
- Added client side built-in support for TLS 1.3
- Improved built-in TCP/IP stack receiver throughput
- Improved TLS handling
- Added support for Renesas CC-RH compiler
- Added support for Renesas RA6M4, NXP MIMX RT1170, and Infineon XMC4 and XMC7
- Added support for DP83867 GbE PHY
- Introduced event
MG_EV_HTTP_HDRS
, triggered when HTTP headers have been received - Deprecated
mg_http_match_uri()
, usemg_match()
instead - Deprecated
mg_ncasecmp()
,mg_vcmp()
, andmg_vcasecmp()
, usemg_strcmp()
and the added functionmg_strcasecmp()
instead - Deprecated
mg_strstr()
- Deprecated
mg_strdup()
, useb.buf = mg_mprintf("%.*s", a.len, a.buf); b.len = a.len;
instead - Deprecated
mg_hex()
, usemg_print_hex
and the '%M' specifier with one of the print functions instead - Deprecated
mg_unhex()
, andmg_unhexn()
, use the newly added functionmg_str_to_num()
instead - Removed architecture auto-detection for embedded types, must manually define
MG_ARCH
- Renamed
mongoose_custom.h
tomongoose_config.h
- Renamed
struct mg_str::ptr
tostruct mg_str::buf
Minor changes
- Enhanced HTTP upload example to write the uploaded file. Also added a full fledged file transfer server and client example.
- Added support for ESP32 IDF OTA firmware updates
- Updated support for the latest version of the Zephyr project
- Moved non-embedded examples to a tutorials code section. Added a new section with reference projects
- Added API support for application handling of MQTT pub retries
- Deprecated
mg_lower()
andmg_globmatch()
, both internal, undocumented functions - Improved test coverage
Mongoose 7.13
Overview
This release adds fixes and improvements, and more examples.
NOTE: this release has an issue with TLS receive path. If your application receives large chunks of data over TLS, consider switching to HEAD, or keep on 7.12, or wait for the next release in May, 15.
Important Changes
- Added examples for more ST and NXP development boards
- Added experimental (server side only) built-in support for TLS 1.3
- Added CMSIS-Driver support for built-in TCP/IP stack
- Renamed 'STM32' built-in TCP/IP stack driver to 'STM32F'
- Renamed MG_ENABLE_FILE to MG_ENABLE_POSIX_FS
- Removed
fn_data
from the event handler signature - Changed
mg_file_read()
signature to now returnstruct mg_str
- New configuration wizard scheme for Keil-based examples
Minor changes
- Continued renaming examples to a standard naming scheme
- Introduced
mg_wakeup()
to improve interaction in multi-threaded environments - Introduced
mg_split
replacingmg_span
- Introduced
mg_json_get_tok
as a helper for parsing JSON strings - Introduced
mg_fs_ls()
as a helper for listing directories - Continued adding experimental support for OTA updates, more devices
- Increased test coverage
- Reinstalled default TCP backlog size of 128, keeping it as 3 for Keil's MDK
- Reworked DNS multiple response handling; first 10 are considered.
- Added examples for simple integrations with Micropython
- Added support for CH32V307
- Added example for Teensy 4.1 boards
- OpenSSL logging is now wrapped inside Mongoose logs
- New MQTT dashboard example
- New Modbus master dashboard example
- Added file upload capabilities to the http-server example
Mongoose 7.12
Overview
This release adds fixes and improvements, and more examples
Important Changes
- Added examples for more ST, NXP, and Microchip development boards
- Added SAME54 driver
- Improved Mongoose built-in TCP/IP stack
- Added support for session tickets in TLS connections; the TLS API has minor changes
- The base64 API has changed
- Removed MG_EV_HTTP_CHUNK
Minor changes
- Improved iMXRT1020 driver
- Added MbedTLS support for some embedded examples
- Continued renaming examples to a standard naming scheme
- Deprecated the back-to-back socket pipe
mg_mkpipe()
- Improved handling and parsing of JSON arrays
- Added experimental support for OTA updates
- Increased test coverage
- Added MG_ENABLE_CUSTOM_LOG
Mongoose 7.11
Overview
This release adds fixes and improvements, and improved support for STM32Cube and ARM Keil MDK
Important Changes
- Added STM32CubeIDE examples for more development boards
- Added support for RT-Thread RTOS
- MQTT variable length issue fixed, CVE-2023-2905
- MQTT5 byte-encoded properties issue fixed
- HTTP truncated headers issue fixed
- Fixed MQTT QoS 2 handling, added tools to ease implementation
- Improved DHCP client in Mongoose built-in TCP/IP stack
Minor changes
- Documentation fixes
- Improved connection establishment in Keil MDK TCP/IP stack (RL)
- Improved STM32H driver
- Minor improvements to STM32F driver
- Added MbedTLS support for some embedded examples
- Replaced
mg_remove_double_dots()
with a path check function:mg_path_is_sane()
- Extended list of HTTP reason texts for status codes
- Started renaming examples to a standard naming scheme
- Removed very old STM32 examples
Notice: The back-to-back socket pipe mg_mkpipe()
deprecation has been postponed, it will be deprecated in Mongoose 7.12 release.
Mongoose 7.10
Overview
This release adds fixes and improvements, new examples, and improved support for STM32Cube and ARM Keil MDK
Important Changes
- Introduced a lock-free queue for inter-process communications purposes. See https://github.com/cesanta/mongoose/tree/master/examples/multi-threaded . The back-to-back socket pipe mg_mkpipe() will be deprecated in Mongoose 7.11 release.
- Proprietary extensions for mg_*printf() have been removed, only %m and %M remain. Former %Q, %A, etc. functionality is now handled by helper functions called via these extensions
- Added support for user properties in MQTT
- Added STM32H7 driver for built-in TCP/IP stack, with examples
- Added RNDIS support for TM4C1294 with built-in TCP/IP stack
- Makefiles now support development in Windows 10/11
- Added support for ARM Compiler 6 in Keil MDK
- Introduced many ARM Keil MDK examples for STM32F746
- Introduced several STM32CubeIDE examples
- Documentation has been integrated with tutorials at https://mongoose.ws/documentation/
- Negative Content-Length header issue fixed, CVE-2023-34188
Minor changes
- Documentation fixes
- OpenSSL TLS SNI bug fixed
- content-length header in mg_http_reply() bug fixed
- Print floating point number bug fixed
- Bind IPv4 and IPv6 sockets on the same port bug fixed
- UDP listener not working bug in built-in TCP/IP stack fixed
- Content length issue fixed
- Honor Accept-Encoding when serving .gz files
- Improved error handling in MDK (RL) TCP/IP stack
- Improved building of FreeRTOS+ TCP in supported platforms
- Added support for 10Mbps and half-duplex in built-in embedded drivers
- Embedded ARM MCU examples now use standard CMSIS headers
- Added i.MX RT1020 driver for built-in TCP/IP stack
- STM32F examples now use the RNG
- Improved coverage tests
Mongoose 7.9
Overview
This release adds fixes and improvements, mainly on the TCP/IP stack; new examples, and support for new embedded targets
Important Changes
- Improved STM32F drivers for MIP
- Added TM4C driver for MIP
- Added RNDIS support examples for MIP
- Added mbedtls support to MIP
Minor changes
- Documentation fixes
- fixed mg_json_get()
- Introduced mg_timer_expired()
- Made mip-pcap example work on Mac and Linux
- Pass long *bytes_read to MG_EV_READ
- Added MAC address filtering to stm32 driver.
- Added example to use TAP interface on Linux
- Fix mbedtls MG_IO_WAIT case
- Add smtp client example
- Fixed passing null ptr to memmove()
- Fixed SSDP example for second and subsequent responses
- Fixed null pointer dereference in mg_rpc_add()
- Test on big endian CPU architectures
- Updated to latest Zephyr and their Docker repo
- Fixed json-rpc-over-ws example
- Updated Zephyr examples
- Added Raspberry Pi Pico and Pico W examples
- Use board nucleo_f429zi in Zephyr
- Removed mg_hexdump from deliver_chunked_chunks
- Fixed unintended socket close on systems with valid fd=0 descriptor numbering
- Improved TI-RTOS timing support
- Added mg_hello()
- Fixed TI-RTOS port
- Accept zero-length payload messages in MQTT
- Create MG_ARCH_FREERTOS, MG_ENABLE_LWIP, MG_ENABLE_FREERTOS_TCP
- Added EK-TM4C1294XL examples
- Fixed mg_straddr() stack overwrite
- Added stdlib.h to includes in FreeRTOS arch
- Added FreeRTOS + MIP examples
- MG_EV_POLL generation on MIP
- Added %I printf() specifier for IP address.
- Added TinyUSB examples
- Fixed MQTT server example
- Added RNDIS examples
- Added pico-w5500 example
- Renamed struct mg_connection::label -> data. Made its size configurable
- Added RMII example for RP2040
- Fixed FreeRTOS arch includes on newlib platforms
Mongoose 7.8
- Introduced
c->is_resp
flag for the server-side HTTP connections, for correctly handling pipelined requests that can span several event handler invocations - Enhancements to the MIP TCP/IP stack. The baremetal nucleo-f746 example works with device dashboard: HTTP UI, MQTT, Websocket
- Reduced default
MG_HTTP_MAX_HEADERS
from 40 to 30 to reduce embedded stack usage - Added server and client native JSON-RPC support, see https://mongoose.ws/documentation/#rpc
- Enhanced example/device-dashboard to show real time graph, MQTT communication and user authentication
- Added a large number of new tutorials, enhanced existing ones, and added videos: https://mongoose.ws/tutorials/
- Enhanced illustrations in API reference, e.g. https://mongoose.ws/documentation/#mg_http_reply
- Add an ability to specify
MG_ARCH
inmongoose_custom.h
- Introduced
mg_*xprintf
formatting functions, https://mongoose.ws/documentation/#mg_xprintf-mg_vxprintf - Changed logging to use
mg_pfn_t
primitive - Added tests for large WS frames
- Added unit tests for auto-gzipped static content
- Enhanced SNTP time calculation, made it more accurate
- Refactored
MG_EV_HTTP_CHUNK
handling, made it more robust and resilient - Added epoll support for linux targets
- Changed
mg_log_set(level)
: debuglevel
is now anint
, notconst char *
- Made fixes for poll() support, added poll() support for Windows, made it default to avoid
FD_SETSIZE
restrictions - Added initial support for RP2040
- Exported MQTT result code definitions
- Added MQTT5 support
- Added native JSON API. Now external JSON libraries are not required: https://mongoose.ws/documentation/#json
- Added examples/uart-bridge, examples/sntp-time-sync, and many others
- Added automatic PUBACK responses for MQTT qos > 0
- Added
mg_ws_printf()
- Implemented automatic pre-compressed
.gz
handling for static files - Added
mg_http_serve_opts::page404
for custom 404 handling - Added udp/tcp flag for
mg_mkpipe()
Mongoose 7.7
- Added an experimental embedded TCP/IP stack
- Added
MG_ARCH_RTX
Keil MDK RTX support - Added
MG_ARCH_NEWLIB
- Added
MG_ARCH_TIRTOS
TI RTOS support - Added Keil MDK tutorial
- Added TI RTOS example
- Added Zephyr support and 4 TLS-enabled examples
- Enhanced device dashboard example
- Changed mg_hexdump() to use logging instead of malloc-ing hex string
- Refactored multithreading API, enabled bidirectional IO
- Fixed TLS buffering issue
- Fixed up / enhanced many util functions
- Fixed MQTT suback handling
- Introduced
MG_ENABLE_CUSTOM_MILLIS
for custom uptime functions - Fixed DNS failure handling
- Added more unit tests - for failed auth TLS validation and others
- Added valgrind tests
- Fixed HTTP chunk handling
- Using independed mg_snprintf() routine instead of C lib
- Enhanced docs
- Enhanced fatfs support
Mongoose 7.6
- Fixed
mg_check_ip_acl()
- API change for
mg_wakeup()
- added ability to pass specific data to the mongoose task - API change for
mg_mqtt_pub()
andmg_mqtt_sub()
- usingstruct mg_str
instead ofstruct mg_str *
- Added embedded FatFS support,
mg_fs_fat
- API change for
mg_http_upload()
- added FS parameter - API change for
struct mg_fs
- open and close calls acceptvoid *
, notstruct mg_fd *
- Fixed
mg_url_port()
- Added FS parameter to the
struct mg_tls
, in order to let TLS code to read certs from any FS - Fixed DNS resolution issue: propagating DNS errors to the resolving connection
- Added ability to override stat() call for POSIX FS
- Improved UDP - not calling connect()
- Added SSDP search example
- Added huge-response example
- Added realpath() convenience macro for Win32
- Use
int64_t
for millisecond values in timers and formg_millis()
- Removed
mg_time()
andusleep()
- Made mongoose friendly to the baremetal Keil build