Skip to content

Releases: cesanta/mongoose

7.16

20 Nov 13:04
Compare
Choose a tag to compare

Overview

This release adds fixes and improvements, and more examples.

Important Changes

  • Improved TLS handling
  • Improved ARP and UDP handling in LANs
  • Fixed IP fragmentation detection in big-endian architectures
  • MG_IO_SIZE defaults now to 256 on embedded platforms
  • mg_http_serve_opts.mime_types now accepts a user settable default for unknown file types
  • Improved mg_random() strength, changed function signature to bool mg_random(void *buf, size_t len)
  • TLS now aborts on weak RNGs (e.g.: when mg_random() returns false)
  • Renamed ARCH_RP2040 to ARCH_PICOSDK
  • Added support for the RNG in Pico-SDK
  • Added support for RP2350 and W5500-EVB-Pico2
  • Added support for TMS570 and the ARM-CGT compiler
  • Refactored the OTA firmware update API
  • Added support for OTA firmware update in most supported platforms

Minor changes

  • Improved HTTP handling of connection closing and pipelined requests
  • Added the macro MG_TCPIP_IFACE(mgr) to access elements of the built-in TCP/IP stack interface, for example the IP address: MG_TCPIP_IFACE(mgr)->ip
  • Updated support for the latest version of the Zephyr project
  • Added more embedded examples
  • Added bare metal support for the Raspberry Pi Pico W
  • Many examples now default to using our built-in TLS, without preventing the use of other choices
  • Changed many embedded examples to make use of our Wizard
  • Continued reformatting the examples section
  • Updated the AWS MQTT client example to work with Elliptic Curve keys
  • Improved test coverage

7.15

21 Aug 12:35
Compare
Choose a tag to compare

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

20 May 13:56
Compare
Choose a tag to compare

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(), use mg_match() instead
  • Deprecated mg_ncasecmp(), mg_vcmp(), and mg_vcasecmp(), use mg_strcmp() and the added function mg_strcasecmp() instead
  • Deprecated mg_strstr()
  • Deprecated mg_strdup(), use b.buf = mg_mprintf("%.*s", a.len, a.buf); b.len = a.len; instead
  • Deprecated mg_hex(), use mg_print_hex and the '%M' specifier with one of the print functions instead
  • Deprecated mg_unhex(), and mg_unhexn(), use the newly added function mg_str_to_num() instead
  • Removed architecture auto-detection for embedded types, must manually define MG_ARCH
  • Renamed mongoose_custom.h to mongoose_config.h
  • Renamed struct mg_str::ptr to struct 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() and mg_globmatch(), both internal, undocumented functions
  • Improved test coverage

Mongoose 7.13

21 Feb 11:52
Compare
Choose a tag to compare

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 return struct 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 replacing mg_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

12 Oct 14:00
Compare
Choose a tag to compare

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

03 Jul 15:22
Compare
Choose a tag to compare

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

18 May 15:13
b379816
Compare
Choose a tag to compare

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

20 Jan 22:37
Compare
Choose a tag to compare

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

28 Aug 13:42
@cpq cpq
Compare
Choose a tag to compare
  • 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 in mongoose_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) : debug level is now an int, not const 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

19 May 10:55
@cpq cpq
Compare
Choose a tag to compare
  • 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