Skip to content

Releases: cesanta/mongoose

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

Mongoose 7.6

21 Jan 12:55
@cpq cpq
Compare
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
Compare
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
Compare
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
Compare
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 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

09 Mar 11:37
@cpq cpq
Compare
Choose a tag to compare
  • Added mg_mqtt_next_unsub()
  • Added chunked HTTP client support and MG_EV_HTTP_CHUNK event
  • Restored mg_mqtt_{ping,pong,disconnect} functions
  • Fixed Cygwin and QNX builds
  • Added struct mg_mgr::userdata pointer
  • Added struct mg_http_message::head which 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

26 Jan 12:29
@cpq cpq
Compare
Choose a tag to compare

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

Mongoose 7.0

12 Dec 10:57
@cpq cpq
Compare
Choose a tag to compare

Overview

This is a major release, aimed primarily at refactoring and cleanup of the codebase. The main focus is made on the embedded usage.
The documentation has been fully revamped, and published at https://cesanta.com/docs. Porting from the 6.x version is not straightforward, despite all concepts stayed intact. The major changes include:

  • CGI support has been removed

  • WebDAV support has been removed

  • Socks5 support has been factored to the example

  • Digest auth support has been removed. The anticipated usage is Basic + TLS

  • Mongoose documentation

Non-amalgamated sources

The non-amalgamated sources are kept in src/, and amalgamation is performed by Makefile. Set -DMG_ENABLE_LINES compiler option to enable non-amalgamated diagnostics.

CI tests and coverage

A Circle CI tests are established, to test on the common platforms and compilers, for both ISO C and ISO C++ mode. Also, an automatic test coverage tracking is performed.

The plan for the next releases is to add platform-specific examples (like for ESP32, STM32, etc) and integrate them into CI, to ensure they do not break as development continues.

Continuous fuzzing test

Mongoose is integrated into Google's https://oss-fuzz.com/ service, to enable continuous fuzzing code tests. This helps to find security issues early on.

Mongoose 6.18

21 May 15:48
@cpq cpq
Compare
Choose a tag to compare
  • Allow OpenSSL session reuse on 2-way SSL
  • Updated certs for OpenSSL tests
  • Fixed OpenSSL error status issue
  • Added HTTP proxy client example
  • Fixed deferencing mg_http_free_proto_data_endpoints
  • Fixed typedef bool for MSC