Releases: cesanta/mongoose
Releases Β· cesanta/mongoose
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
Mongoose 7.5
- Add
MG_HTTP_INDEX
build var, default to "index.html", to let user to change directory index file - Added
MG_CUSTOM_TLS
build flag, to enable any 3rd party TLS library integration (or make tweaks to existing integrations) - Added example for mg_http_bauth()
- Added documentation for mg_http_get_header_var()
- Added CIFuzz integration
- Fixed captive portal example
- Added json-rpc-via-ws example
- Fixed FD_CLOEXEC handling
- Added Add examples/mqtt-client-aws-iot
- Add user and pass to struct mg_mqtt_opts
- Fixed comma handling in mg_http_get_header_var()
- Fixed UDP handling on Windows
- Added mbedTLS CRL support
- Fixed mg_random() on ESP32
Mongoose 7.4
- Added example for NXP RT1020 on Microsoft AzureOS
- Added support for Microsoft AzureOS
- Better diagnostics in mg_open_listener, #1359
- Including ipv6 wrapping brackets [] in the result of mg_url_host()
- Support multiple serving directories (web roots):
opts.root_dir = "/path1,/uri1=/some/other/path"
. See 2139fbc - Security enhancement in MQTT codepath
- Removed
realpath()
from the virtualised FS API - Enhanced OpenSSL handshake codepath
- API change mg_iobuf_{append,delete} -> mg_iobuf_{add,del}
- Added WS defragmentation logic
- Added Add mg_check_ip_acl()
- API change: mg_next_comma_entry() -> mg_commalist()
- Added stm32-nucleo-f746z example
- Fixed HTTP chunk handling for larger chunks
- Enhanced FREERTOS + LWIP support - works out of the box!
- Refactored mg_mkpipe() and multithreading support
- Sending MG_EV_WS_OPEN to server connections, too
- Added MQTT over Websocket example
- Added virtualised FS support and built-in ability to pack static files into server binary and serve files without a "real" FS
- Added RISCV target to unit test
Mongoose 7.3
- Improved SSI file serving: added Content-Type header
- Improved compiler compatibility, using traditional header guards instead of
#pragma one
- When listening on port 0, exposing the actual port
- Disabled SSL 1.1 for OpenSSL
- Fixed C++ mg_str constructor shadowing
- Using FD_CLOEXEC on opened sockets on UNIX-like systems
- Support for new mbedtls 3.x
- Improved C++ interop with
#ifdef __cplusplus
- Improved MQTT API: added
qos
andretain
params tomg_mqtt_{pub,sub}
- Optimised RAM usage -
mg_iobuf_append()
- Added MG_ARCH_FREERTOS_LWIP
- Added stm32f7 example with FreeRTOS+TCP stack
- Re-enabled Range header support (partial downloads)
- Multiple documentation fixes
- Improved
mg_random()
for Espressif builds - Added multiple unit tests
- Added an ability to load mbedTLS certs from memory
- Added multipart form upload