Mongoose Changelog

What's new in Mongoose 6.5

Jul 13, 2016
  • NEW FUNCTIONALITY:
  • Mongoose Embedded Web Server LogoImproved TI CC3200 support:
  • First on the list of functions is the improved support of TI CC3200. Cesanta is official partner of Texas Instruments and it was important to us to ensure we have strong support for this popular MCU.
  • Here’s what’s changed:
  • Newly-rewritten SimpleLink socket handler
  • Added support for SSL
  • NWP restart hook: sl_restart_cb should be invoked by the user to re-init listeners after NWP restart
  • JSON serialisation/deserialisation moves to back to a dedicated library
  • Support for JSON moves back to the dedicated library Frozen (check it out on GitHub).
  • With this move, JSON functionality has greatly improved:
  • printf/scanf like API has been implemented, making parsing and emitting JSON easy and convenient, optimised for use in C/C++ environments.
  • Dedicated library Frozen and no longer available on Mongoose
  • BUG FIXES:
  • As always, we appreciate your feedback on any bugs and got to work on those:
  • CGI: REMOTE_ADDR and SERVER_PORT variables are now passed to the scripts
  • Fixed a memory leak in mg_connect_ws_opt
  • Fixed issues with HTTP keep-alive connections

New in Mongoose 6.4 (Apr 13, 2016)

  • New features and API changes:
  • Multipart upload streaming - a way to process multipart requests (like file uploads) without fully buffering them
  • mg_register_http_endpoint - an easy to use way to handle requests to specific URIs
  • mg_parse_uri - a new function to parse URIs, used internally and available publicly
  • mg_bind_opt and mg_connect_opt now take SSL-related options
  • mg_connect_http_opt and mg_connect_ws_opt API calls have been added, with SSL-related options initially
  • Support for TI CC3200 and MSP432; For both Mongoose now has example CCS projects that can be imported and used right away (CC3200, MSP432).
  • Bug fixes and improvements:
  • A number of fixes in handling of UDP, added an example.
  • Fix MQTT parsing of nullary commands.
  • Adjust poll timeout if there are pending timers.

New in Mongoose 6.3 (Apr 13, 2016)

  • This release concerns commercial users only. From this release on, there are no separation for lite/standard/premium version.
  • Technical changes (bugfixes, new features) are scheduled for the next 6.4 release in mid-April.

New in Mongoose 6.1 (Apr 13, 2016)

  • What's new in the Mongoose Library:
  • Native support for PicoTCP embedded TCP/IP stack
  • Native support for LWIP embedded TCP/IP stack
  • Native support for ESP8266 SDK (see example)
  • Native support for CC3200 FreeRTOS SDK
  • Added ability to specify extra headers for mg_serve_http() - that implements e.g. CORS on server side
  • Added ability for automatic port-based redirects, for HTTP->HTTPS redirects
  • Multiple bigfixes

New in Mongoose 6.0 (Apr 13, 2016)

  • Overview:
  • This is a major release of Mongoose. It brings new capabilities, making Mongoose a multi-protocol network library rather then only HTTP/Websocket. That means more flexible and rich API. New Mongoose API is not backward-compatible with pre-6.0 versions.
  • What's New:
  • Support for plain TCP, plain UDP
  • Support for Websocket client
  • JSON-RPC client, JSON-RPC server
  • MQTT client, MQTT broker
  • CoAP client, CoAP server
  • DNS client, DNS server, async DNS resolver
  • SSL layer improvements, including modern cryptography support
  • New API
  • Architecture notes:
  • Pre-6.0 Mongoose was hiding the implementation from the user. Like, internal connection structures, sockets, etc. Mongoose 6.0 opens everything to the user. This has it's pro and cons. The decision to open the guts of the library is to provide power users to take full control over the IO engine. Basic use cases are well covered by the example that are provided in abundance.
  • Mongoose is available in three editions to suit your integration needs:
  • Mongoose Lite: Cross platform integration, SSL/TLS, HTTP support
  • Mongoose: Mongoose Lite + HTTP CGI, HTTP SSI, HTTP Digest Auth, WebSocket support
  • Mongoose Premium: Mongoose + Plain TCP, UDP, JSON-RPC, MQTT, DNS, CoAP support

New in Mongoose 5.6 (Apr 13, 2016)

  • Changes in Libmongoose library:
  • Added -dav_root configuration option that gives an ability to mount a different root directory (not document_root)
  • Fixes for build under Win23 and MinGW
  • Bugfix: Double dots removal
  • Bugfix: final chunked response double-send
  • Fixed compilation in 64-bit environments
  • Added OS/2 compatibility
  • Added getaddrinfo() call and NS_ENABLE_GETADDRINFO
  • Various SSL-related fixes
  • Added integer overflow protection in iobuf_append() and deliver_websocket_frame()
  • Fixed NetBSD build
  • Enabled NS_ENABLE_IPV6 build for Visual Studio 2008+
  • Enhanced comma detection in parse_header()
  • Fixed unchanged memory accesses on ARM
  • Added ability to use custom memory allocator through NS_MALLOC, NS_FREE, NS_REALLOC
  • Changes in Mongoose binary:
  • Added -start_browser option to disable automatic browser launch
  • Added experimental SSL support. To listen on HTTPS port, use ssl://PORT:SSL_CERT format. For example, to listen on HTTP port 8080 and HTTPS port 8043, use -listening_port 8080,ssl://8043:ssl_cert.pem

New in Mongoose 5.5 (Apr 13, 2016)

  • Changes in Libmongoose library:
  • Added new API function: mg_forward() for proxying functionality
  • Added new API function: mg_send_file_data() for sending file data
  • Added new utility API functions: mg_mmap() and mg_munmap()
  • Changed the way SSL settings are handled: removed ssl_certificate and ssl_ca_certificate options, and instead made listening_port accept ssl://PORT:SSL_CERT:CA_CERT notation
  • Added ability to listen on multiple ports, see listening_port documentation
  • Added enable_proxy option
  • Added cookie_authentication example
  • Added websocket_ssl_proxy example
  • Added http_client example
  • Increased default 'idle connection' timeout from 30 to 300 seconds
  • Fixed MinGW build
  • Refactored all examples, put each in it's own directory with dedicated build
  • Many smaller bugfixed, including SSL, CGI, API, proxy, etc
  • Changes in pre-compiled binaries:
  • Support for multiple listening ports
  • Fixed CGI handling for scripts that specify interpreter in the hashbang line

New in Mongoose 5.4 (Apr 13, 2016)

  • Changes in Libmongoose library:
  • Added hexdump_file option for low-level request/reply debugging
  • Added mg_template() API function for generating HTML pages from templates with expansions
  • Fixed struct mg_connection::local_ip handling, mg_set_option() behavior with NULL values
  • Added mg_send_file() call to send arbitrary file to the client
  • Added mg_terminate_ssl() for SSL termination functionality
  • Added HTTP proxy support, enable_proxy config option
  • Added mg_next() for iterating over existing active connections
  • Added client-side SSL auth, ssl_ca_certificate option
  • Added mg_wakeup_server_ex() for pushing messages to existing connections
  • Added MG_WS_HANDSHAKE and MG_WS_CONNECT events that are sent on Websocket handshake is connection establishment, respectively
  • Removed server-side Lua support
  • Filesystem access, reading from socket/SSL performance improvements
  • DAV PROPFIND memory leak fixed
  • Added big_upload.c and enhanced upload.c example
  • Added proxy.c example that demonstrates proxy functionality and SSE pushes
  • Added websocket2.c example that shows simple web chat implementation over websockets
  • Various minor fixes
  • Changes in pre-compiled binaries:
  • Created HTML administration console
  • When server is started, browser is started automatically
  • Fixed directory listing bug when directory contains # character
  • Removed built-in Lua Server Pages in the binary, and instead added Mongoose + Lua developer bundle which has Lua Server Pages support. That also solves external Lua modules loading problem.

New in Mongoose 5.3 (Apr 13, 2016)

  • Changes in Libmongoose library:
  • Moved to the evented API. Updated API documentation is at http://cesanta.com/docs/Embed.shtml http://cesanta.com/docs/API.shtml
  • Added MG_LUA event for exporting custom variables to the Lua environment
  • Added virtual hosts capability, see url_rewrites option description at http://cesanta.com/docs/Options.shtml
  • Added mjpg serving example
  • Cleaned up and documented HTTP client API, with unit tests
  • Added mg_wakeup_server() to awaken mg_poll_server() from another thread
  • Moved Mongoose IO core to https://github.com/cesanta/net_skeleton
  • Added connection hexdump functionality for developers
  • Bug fixes
  • Changes in pre-compiled binaries:
  • New awesome Mongoose logos by our designer Katrin - thanks Katrin! Check them out at http://cesanta.com/products.shtml
  • Added Lua Server Pages support to the free version, quick intro is at http://cesanta.com/docs/Lua.shtml
  • Added quick "Set shared directory" menu item to set document_root
  • Added SSI support to the Pro version
  • Removed SSL support from the Pro version

New in Mongoose 5.2 (Mar 6, 2014)

  • Windows binary made fully UNICODE aware. In previous versions, the presence of non-ASCII chars in document root, CGI script name, or directory name might have broken Mongoose as stand-alone
  • or as Windows service. Now Mongoose works with non-ASCII paths properly. Internally, Mongoose uses UTF8 encoding. When making WinAPI calls, mongoose converts UTF8 strings to wide chars and calls UNICODE API.
  • Enhanced authorization API by providing mg_set_auth_handler() and mg_authorize_digest()
  • Removed mg_add_uri_handler(), added mg_set_request_handler(). There is only one URI handler that handles all requests, just like in 4.x. The reason for this change is to provide an ability to catch all URIs, and at the same time signal Mongoose to continue handling specific URIs.
  • Added mg_parse_multipart() API for file uploads. Note that the restriction on uploading huge files still exists, and will be eliminated in the next release.
  • Allowing mongoose to bind to port 0, in which case it'll bind to any random unused port.
  • Moved idle_timeout_ms to compile-time option
  • Added asynchronous HTTP client, not documented yet. Documentation and examples are coming in the next couple of weeks. Async Websocket client is scheduled for the next release. See usage examples at unit_test.c
  • Windows and MacOS pre-built binaries are now split to free and paid ones, paid binaries include CGI, SSL, Lua, Sqlite, support and updates. Linux pre-built binary includes all functionality and is free, and will continue to be free. Source code for Windows and MacOS GUI is closed. Disclaimer: source code for the command line stand-alone server, as well as Mongoose library itself, will never be closed.
  • Multiple bug fixes and minor enhancements

New in Mongoose 5.1 (Jan 11, 2014)

  • CGI-related bugs where fixed, primarily for Windows platform
  • Bugs on Windows related to UNICODE support were fixed
  • Added a feature to support "error pages" through redirect. Done using -url_redirects option