Releases: cesanta/mongoose
Releases · cesanta/mongoose
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_respflag 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_HEADERSfrom 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_ARCHinmongoose_custom.h - Introduced
mg_*xprintfformatting functions, https://mongoose.ws/documentation/#mg_xprintf-mg_vxprintf - Changed logging to use
mg_pfn_tprimitive - 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_CHUNKhandling, made it more robust and resilient - Added epoll support for linux targets
- Changed
mg_log_set(level): debuglevelis now anint, notconst char * - Made fixes for poll() support, added poll() support for Windows, made it default to avoid
FD_SETSIZErestrictions - 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
.gzhandling for static files - Added
mg_http_serve_opts::page404for custom 404 handling - Added udp/tcp flag for
mg_mkpipe()
Mongoose 7.7
- Added an experimental embedded TCP/IP stack
- Added
MG_ARCH_RTXKeil MDK RTX support - Added
MG_ARCH_NEWLIB - Added
MG_ARCH_TIRTOSTI 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_MILLISfor 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_strinstead 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_tfor 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_INDEXbuild var, default to "index.html", to let user to change directory index file - Added
MG_CUSTOM_TLSbuild 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
qosandretainparams 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
Mongoose 7.2
- Added
mg_mqtt_next_unsub() - Added chunked HTTP client support and
MG_EV_HTTP_CHUNKevent - Restored
mg_mqtt_{ping,pong,disconnect}functions - Fixed Cygwin and QNX builds
- Added
struct mg_mgr::userdatapointer - Added
struct mg_http_message::headwhich contains HTTP line and all headers - Add ability to use in-memory CA PEM for mbedtls
- Improved unicode handling on Win32
- Improved ESP32 example to use SPIFFS and static serving
- Improved TLS SNI
Mongoose 7.1
Overview
This is a bugfix and cleanup release after the major version 7.0 release. A significant number of small issues were fixed, and some new examples added.
- Continuous integration test switched from CircleCI to Github Actions
- Added socks5 example
- Added esp32 example
- Added esp8266 example
- Added mingw test
- Added mbedtls test
- Added openssl test
- Added reverse proxy example
- Added proxy client example
- Added MQTT server example
- Many TLS related fixes
- Fixed DNS resolution timeout
- Added SSI to
mg_http_serve_dir() - Fixed file descriptor leak for local cache codepath