Civetweb Versions Save

Embedded C/C++ web server

v1.16

11 months ago

Summary

bug fixes, documentation and examples, WebDAV

Changes

  • Enable IPv6 as default when using CMake
  • Define error codes for mg_start2, mg_start_domain2, mg_connect_client2
  • Fixes for OpenSSL 3.0 support
  • Add support for Mbed TLS v3.0.0
  • WebDAV should understand Windows File Explorer (experimental)
  • Accept HTTP basic authentication
  • FreeBSD support, including CI and tests
  • Make pattern matching function availible in the public interface
  • Make base64 encoding and decoding functions available
  • Various fixes for HTTP/2 support
  • Additional examples
  • Fixes and updates to existing examples
  • Fix spelling errors in code and documentation
  • Remove Conan support
  • Update version number

Note: A pre-compiled 32-bit executables for Windows is no longer provided, but only a 64 bit Windows executable. The source code itself still supports 32-bit platforms.

Known Issues

The WebDAV support when using the Windows Explorer as client has various limitations when renaming or moving files and folders. In particular file names in non-latin characters may break when running the server on Linux and connecting with the Windows Explorer.

v1.15

2 years ago

Summary

bug fixes, remove legacy interfaces

Changes

  • New configuration for URL decoding
  • Sanitize filenames in handle form
  • Example "embedded_c.c": Do not overwrite files (possible security issue)
  • Remove obsolete examples
  • Remove "experimental" label for some features
  • Remove MG_LEGACY_INTERFACE that have been declared obsolete in 2017 or earlier
  • Modifications to build scripts, required due to changes in the test environment
  • Unix domain socket support fixed
  • Fixes for NO_SSL_DL
  • Fixes for some warnings / static code analysis
  • Update version number

v1.14

2 years ago

Summary

mbedTLS, Lua API enhancements, log filtering

Changes

  • Change SSL default setting to use TLS 1.2 as minimum (set config if you need an earlier version)
  • Add local_uri_raw field (not sanitized URI) to request_info
  • Additional API functions and a callback after closing connections
  • Allow mbedTLS as OpenSSL alternative (basic functionality)
  • Add OpenSSL 3.0 support (OpenSSL 3.0 Alpha 13)
  • Support UNIX/Linux domain sockets
  • Fuzz tests and ossfuzz integration
  • Compression for websockets
  • Restructure some source files
  • Improve documentation
  • Fix HTTP range requests
  • Add some functions for Lua scripts/LSP
  • Build system specific fixes (CMake, MinGW)
  • Update 3rd party components (Lua, lfs, sqlite)
  • Allow Lua background script to use timers, format and filter logs
  • Remove WinCE code
  • Update version number

v1.13

3 years ago

Summary

Various updates and fixes, additional API functions

Changes

  • Add arguments for CGI interpreters
  • Support multiple CGi interpreters
  • Buffering HTTP response headers, including API functions mg_response_header_* in C and Lua
  • Additional C API functions
  • Fix some memory leaks
  • Extended use of atomic operations (e.g., for server stats)
  • Add fuzz tests
  • Set OpenSSL 1.1 API as default (from 1.0)
  • Add Lua 5.4 support and deprecate Lua 5.1
  • Provide additional Lua API functions
  • Fix Lua websocket memory leak when closing the server
  • Remove obsolete "file in memory" implementation
  • Improvements and fixes in documentation
  • Fixes from static source code analysis
  • Additional unit tests
  • Various small bug fixes
  • Experimental support for some HTTP2 features (not ready for production)
  • Experimental support for websocket compression
  • Remove legacy interfaces declared obsolete since more than 3 years
  • Update version number

v1.12

4 years ago

Summary

Multiple improvements and extensions in various areas, including compatibility enhancements, additional Lua scripting features and documentation.

Changes

  • Updates/improvements for LuaXML
  • Updates and tests for JSON for Lua
  • BoringSSL support
  • Add Remark: Do not use Git for Windows V2.24 (but <= V2.23 or >= V2.25)
  • Format configuration dialogs for Windows
  • Add option "hide_tray" to start without Windows systray icon
  • URI checking according to "remove_dot_segments" algorithm from RFC
  • Experimental support for a new server and client start API
  • Additional callbacks to initialize external SSL context
  • More cache control options for static files
  • Trace function for Lua server pages
  • Access to client certificate data for Lua pages
  • Allow to configure SOMAXCONN (max. number of waiting connections)
  • Include some build options for Zephyr
  • Support for flawed CGI interpreters returning only instead of
  • Add NO_FILESYSTEM flag for (embedded) system without any file system
  • Several fixes for server side Lua scripts
  • Disable SSL renegotiation for new OpenSSL version
  • Allow to force TLSv1.3 (disable TLSv1.2)
  • Prefer pre-compressed *.gz file, if it already exists
  • Fix some #include statements for various compilers / OS / SDK versions
  • Support for Linux Standard Base (LSB)
  • Fixes to mg_get_*_info() API functions
  • Fix some bugs/deficiencies in examples and tests
  • Fix some static source code analysis warnings
  • Add Conan package build
  • Fix include for Lua pages in "Kepler Syntax"
  • Replace some uses of deprecated Linux and OpenSSL API functions
  • Improved documentation and examples
  • Fixes for timeout handling
  • Fixes for the request queue (rare loss of requests)
  • Client side SNI
  • Update version number

v1.11

5 years ago

Major Features

Support multiple domains and certificates, support websocket ping-pong, on-the-fly compression, additional API functions

Changes

  • Add API function to send file body for C and Lua
  • Fix several warnings from different compilers and static code analyzers
  • Drop Symbian support from the code
  • Improve examples
  • Timeout for CGI scripts
  • Fix for requests using IPv6 addresses as hostname
  • Shared data for Lua scripts and Lua server pages
  • Add API function for 30x redirect
  • Script for Linux bash auto-completion
  • Add HTTP JSON C callback example
  • Add helper function for HTTP 200 OK response
  • Allow Kepler Syntax for Lua Server pages
  • Update duktape to 2.2.0 and Lua to 5.3.4
  • Optional support for on-the-fly compression (if zlib is available and USE_ZLIB is set)
  • Add method to replace mg_cry and log_access by own implementation
  • Fixes for IPv6 support
  • Add server support for websocket ping pong protocol
  • Fix misspellings in source code and documentation
  • Add error msg to http_error callback
  • Move unit test to a new directory
  • Remove remote_ip request_info member (it has been legacy since several versions)
  • Use gmtime_r instead of gmtime, if available
  • Add some functions to C++ wrapper
  • Support multiple domains with different certificate files (TLS server name identification, SNI)
  • Provide client peer certificate (X509) in mg_client_cert structure
  • Add new callback (get_external_ssl_ctx) to provide pre-initialized TLS context
  • Improve unit tests
  • Fix ssl init for HTTPS clients
  • Update version number

v1.10

6 years ago

Major Features

OpenSSL 1.1 support, add server statistics and diagnostic data

Changes

  • Add missing mg_ or MG_ to symbols in civetweb.h. Symbols without will be removed a future version.
  • Add HTTPS server configuration example
  • Lua Pages: mg.include should support absolute, relative and virtual path types
  • Add API function for HTTP digest authentication
  • Improved interface documentation
  • Support parameters for Lua background scripts
  • Use new connection queue implementation (previously ALTERNATIVE_QUEUE) as default
  • Add USE_SERVER_STATS define, so the server collects statistics data
  • Convert system_info text output and all other diagnostic strings to JSON format
  • Add experimental function to query the connection status (may be dropped again)
  • Add document on proposed future interface changes (for comments)
  • Officially drop Symbian support
  • Ignore leading blank lines in multipart messages (for Android upload service)
  • Rewrite some functions, in particular request parsing
  • CORS preflight directly in the server, with additional config options
  • Solve some warnings from different static source code analysis tools
  • Collect server status data
  • Allow hostname in listening_ports
  • Make maximum request size configurable
  • Allow multiple Sec-Websocket-Protocol
  • Add configuration option to send additional headers
  • Add configuration option for Strict-Transport-Security
  • Mark "file in memory" feature is a candidate for deletion
  • Improve examples
  • Fix timeout error when sending larger files
  • Add mg_send_chunk interface function
  • Allow to separate server private key and certificate chain in two different files
  • Support for multipart requests without quotes (for some C# clients)
  • Initialize SSL in mg_init_library, so https client functions can be used when no server is running
  • Allow "REPORT" HTTP method for REST calls to scripts
  • Allow to compile civetweb.c wih a C++ compiler
  • Lua: Remove internal length limits of encode/decode functions
  • Allow sub-resources of index script files
  • Add config parameter allow_index_script_resource the aforementioned feature
  • Remove deprecated "uri" member of the request from the interface
  • Improve documentation
  • Make auth domain check optional (configuration)
  • Update unit test framework to check 0.11.0 (C89/C90 compilers still need a patched version)
  • Limit depth of mg.include for Lua server pages
  • Additional unit tests
  • OpenSSL 1.1 support
  • Update version number

v1.9.1

7 years ago

Bug fix version

Changes

  • Fix for connections closed prematurely
  • Update to a new check unit test framework and remove patches required for previous version
  • Add "open website" button for pre-built Windows binaries (so end users can easily check for new versions)
  • Update version number

v1.9

7 years ago

Features

Read SSI client certificate information, improve windows usability, use non-blocking sockets, bug fixes

Changes

  • Add library init/exit functions (call is now optional, but will be required in V1.10)
  • Windows: Show system information from the tray icon
  • Windows: Bring overlaid windows to top from the tray icon
  • Add Lua background script, running independent from server state
  • Move obsolete examples into separated directory
  • Change name of CMake generated C++ library to civetweb-cpp
  • Add option to set linger timeout
  • Update Duktape and Lua (third-party code)
  • Add continuous integration tests
  • Add API documentation
  • Limit recursions in .htpasswd files
  • Fix SCRIPT_NAME for CGI directory index files (index.php)
  • Use non-blocking sockets
  • stdint.h is now required and no longer optional
  • Rewrite connection close handling
  • Rewrite mg_fopen/mg_stat
  • Enhanced tray icon menu for Windows
  • Add subprotocol management for websocket connections
  • Partially rewrite timeout handling
  • Add option keep_alive_timeout_ms
  • Improve support for absolute URIs
  • Allow some additional compiler checks (higher warning level)
  • Add option for case sensitive file names for Windows
  • Short notation for listening_ports option when using IPv4 and IPv6 ports
  • Make usage of Linux sendfile configurable
  • Optimize build matrix for Travis CI
  • Retry failing TLS/HTTPS read/write operations
  • Read client certificate information
  • Do not tolerate URIs with invalid characters
  • Fix mg_get_cookie to ignore sub-strings
  • Fix memory leak in form handling
  • Fix bug in timer logic (for Lua Websockets)
  • Updated version number

v1.8

7 years ago

Features

CMake integration, new unit tests based on the check framework, continuous integration with Travis CI and AppVeyor, code analysis with Coverity, some additional API functions, bug fixes and updates

Changes

  • Replace mg_upload by mg_handle_form_request
  • CGI-scripts must receive EOF if all POST data is read
  • Add API function to handle all kinds of HTML form data
  • Do not allow short file names in Windows
  • Callback when a new thread is initialized
  • Support for short lived certificates
  • Add NO_CACHING compile option
  • Update Visual Studio project files to VS2015; rename directory VS2012 to VS
  • Sec-Wesocket-Protocol must only return one protocol
  • Mark some examples and tests as obsolete
  • Remove no longer maintained test utils
  • Add some default MIME types and the mg_send_mime_file API function.
  • Client API using SSL certificates
  • Send "Cache-Control" headers
  • Add alternative to mg_upload
  • Additional configuration options
  • Fix memory leaks
  • Add API function to check available features
  • Add new interface to get listening ports
  • Add websocket client interface and encode websocket data with a simple random number
  • Support SSL client certificates
  • Add configuration options for SSL client certificates
  • Stand-alone server: Add command line option -I to display information about the system
  • Redirect stderr of CGI process to error log
  • Support absolute URI; split uri in mg_request_info to request_uri and local_uri
  • Some source code refactoring, to improve maintainability
  • Use recursive mutex for Linux
  • Allow CGI environment to grow dynamically
  • Support build for Lua 5.1 (including LuaJIT), Lua 5.2 and Lua 5.3
  • Improve examples and documentation
  • Build option CIVETWEB_SERVE_NO_FILES to disable serving static files
  • Add Server side JavaScript support (Duktape library)
  • Created a "civetweb" organization at GitHub.
  • Repository moved from https://github.com/bel2125/civetweb to https://github.com/civetweb/civetweb
  • Improved continuous integration
  • CMake support, continuous integration with Travis CI and Appveyor
  • Adapt/port unit tests to CMake/Travis/Appveyor
  • Bug fixes, including issues from static code analysis
  • Add status badges to the GitHub project main page
  • Updated version number