Releases: cesanta/mongoose
Mongoose 6.5
Changes
- Improved TI CC3200 support
- 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
- Dedicated JSON Library
- Support for JSON serialisation/deserialisation has been moved back to a dedicated library (Frozen). It has seen major improvements - printf/scanf like API has been implemented, making parsing and emitting JSON easy and convenient. Users that need JSON functionality are encouraged to check out Frozen.
- JSON-RPC support is no longer available as part of Mongoose
- 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
- Other minor fixes
Binaries
Windows and Mac binaries are available for download from the website.
Licensing
Mongoose is available under GPLv2. Commercial use requires a license, please contact us for terms.
Support
Community support can be found on our forum. Commercial support options are available separately by contacting us.
Mongoose 6.4
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.
Licensing
Mongoose is available under GPLv2. Commercial use requires a license, please contact us for terms.
Support
Community support can be found on our forum. Commercial support options are available separately by contacting us.
Mongoose 6.3
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.
6.2
What's new in the Mongoose Library
- WebDAV support improvements. With a just a couple of lines of code your web server is ready to serve WebDAV and can be mounted as a network drive in very different clients, like Finder on MacOS, Explorer on Windows and Nemo, Nautilus (and others) on Linux. Just add
dav_document_root
to initialization parameters and your are ready to go. See simplest_web_server example. - Timer support. Mongoose 6.2 introduces new event -
MG_EV_TIMER
. With event and new API functionmg_set_timer
things like connection timeout (and a lot of another timeout-related features) can be easily implemented. Callmg_set_timer(my_connection, time(NULL) + N)
and my_connection will receive MG_EV_TIMER once N seconds is elapsed. Sub-second precision is also supported, and themg_time
function which returns current time as a fraction floating point value has been added.
See API documentation for more details.
Other changes:
MG_EV_CLOSE
is now always delivered before connection is destroyed. This should simplify cleanup.- New API function:
mg_url_decode
to decode URL-encoded string. - g++ and Microsoft Visual Studio support was improved
Mongoose 6.1
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
Mongoose editions
For commercial use, Mongoose is available in three editions:
- 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
Mongoose 6.0
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 Editions
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
Mongoose 5.6
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 andNS_ENABLE_GETADDRINFO
- Various SSL-related fixes
- Added integer overflow protection in
iobuf_append()
anddeliver_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
Mongoose 5.5
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 madelistening_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
Mongoose 5.4
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
andMG_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 enhancedupload.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.
Mongoose 5.3
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 awakenmg_poll_server()
from another thread - Moved Mongoose IO core to [https://github.com/cesanta/net_skeleton](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