Skip to content

Releases: cesanta/mongoose

Mongoose 7.12

12 Oct 14:00
Choose a tag to compare


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

Mongoose 7.11

03 Jul 15:22
Choose a tag to compare


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
Choose a tag to compare


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 . 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
  • 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
Choose a tag to compare


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
  • 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
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
  • 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:
  • Enhanced illustrations in API reference, e.g.
  • Add an ability to specify MG_ARCH in mongoose_custom.h
  • Introduced mg_*xprintf formatting functions,
  • 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:
  • 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
Choose a tag to compare
  • Added an experimental embedded TCP/IP stack
  • Added MG_ARCH_RTX Keil MDK RTX support
  • 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

21 Jan 12:55
@cpq cpq
Choose a tag to compare
  • 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() and mg_mqtt_sub() - using struct mg_str instead of struct 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 accept void *, not struct 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 for mg_millis()
  • Removed mg_time() and usleep()
  • Made mongoose friendly to the baremetal Keil build

Mongoose 7.5

17 Dec 13:49
@cpq cpq
Choose a tag to compare
  • 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

30 Sep 12:52
@cpq cpq
Choose a tag to compare
  • 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

23 Jul 10:46
@cpq cpq
Choose a tag to compare
  • 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 and retain params to mg_mqtt_{pub,sub}
  • Optimised RAM usage - mg_iobuf_append()
  • 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