libmicrohttpd Changelog

What's new in libmicrohttpd 0.9.42

May 14, 2015
  • Fix off-by-one in MHD_start_daemon_va() error handling logic when initialization of threads for thread pool fails for some reason. -CG/JC
  • Add support for poll() in W32. -EG
  • Fix #3784: actually implement MHD_CONNECTION_INFO_SOCKET_CONTEXT. -asherkin

New in libmicrohttpd 0.9.41 (Apr 30, 2015)

  • Fix issue where resumed connections would not continue
  • unless other requests are active in certain event-loop modes. Thanks to Mike Castillo for reporting. -CG
  • Fixing issue #3753 (testcase issue). -CG
  • Fix looping issue when using MHD_USE_POLL_INTERNALLY and a client times out. -LB
  • Fix looping issue when combining MHD_USE_EPOLL_LINUX_ONLY with HTTPS and slow clients. -CG
  • Fix logic to add "Connection: Close" that was broken in 0.9.38 when adding MHD_RF_HTTP_VERSION_1_0_ONLY. -CG
  • Ensure fast termination in MHD_USE_THREAD_PER_CONNECTION mode on W32 by using signal pipe. -CG
  • Fixing issue with undrained signal pipe when using MHD_USE_SELECT_INTERNALLY and MHD_USE_POLL in combination with MHD_resume_connection(), causing 100% CPU usage. -DD

New in libmicrohttpd 0.9.40 (Apr 7, 2015)

  • Releasing libmicrohttpd 0.9.40. -CG

New in libmicrohttpd 0.9.39 (Dec 27, 2014)

  • Adding MHD_http_unescape() to public API (#3585). -CG
  • Updating documentation to document
  • MHD_is_feature_supported(). -CG
  • Fix generated compiler flags for Solaris Studio linker (#3584). -CG

New in libmicrohttpd 0.9.38 (Oct 7, 2014)

  • Properly decode '+' in URL-encoded POST data. -CG/KM
  • Fix --disable-dauth configure option (#3543). -doostee
  • Fix failure to terminate 'instantly' in thread-per-connection mode if there is a client with open connections.
  • Actually, avoid locking on response as responses must not be modified in a connection-specific way; instead modify the connection's data buffer to add missing responses headers.
  • If we are forced to add "Connection: close", suppress output of conflicting application-provided "Connection: Keep-Alive" header. -CG
  • Lock on response if adding headers, needed if response object is shared across threads and connections. -CG
  • Add 'MHD_set_response_options' as a way to set per-response flags. Add flag to force HTTP 1.0-only conservative behavior, in particular suppressing adding "Connection" headers. -CG

New in libmicrohttpd 0.9.37 (Jun 3, 2014)

  • Added back unescaping for URI path (#3413) but without unescaping '+' (#3371) to remain compatible with MHD 0.9.34 and before. Note that applications providing a custom MHD_OPTION_UNESCAPE_CALLBACK are no longer expected to replace '+' with ' ', as that is now done separately for the locations where this transformation is appropriate.

New in libmicrohttpd 0.9.36 (May 26, 2014)

  • Fix notifying client about completed request twice under certain circumstances.
  • Fix accidental transmission of footer termination '\r\n' for responses with zero byte payload and non-chunked encoding (#3397).
  • Thanks to amatus for reporting.
  • Fix gnutls header check to make it cross-compile aware.

New in libmicrohttpd 0.9.35 (May 3, 2014)

  • Fix infinite loop (DoS) when HTTP connection is reset (#3392). -GM
  • Fix possible issue from combination of epoll and suspend/resume logic if edge trigger event is lost; also simplify logic to maintain simpler invariants on the epoll state. -CG
  • Use OpenSSL cipher list "HIGH" in libmicrospdy (#3391). -CG

New in libmicrohttpd 0.9.34 (Feb 25, 2014)

  • Added support for TCP FASTOPEN. -SHT
  • Removed dependency on plibc for simpler compilation for W32.
  • Added configure option "--disable-pipes" to use socketpairs instead of pipes for signalling to child threads. Pipes are always disabled on W32.
  • Some code refactoring. -EG
  • Corrected some uses of 'int' vs. 'size_t'. -EG/CG
  • Allow Keep-Alive with HTTP 1.0 (if explicitly requested), and automatically set "Connection: Keep-Alive" in response in this case as well. -CG
  • Adding explicit annotations to hide symbols that are not for export in the C code (gcc 4.0 or higher only). -CG
  • Adding a few lines to avoid warnings from picky compilers. -

New in libmicrohttpd 0.9.33 (Dec 27, 2013)

  • Fixed an issue with a missing argument in the postexample.
  • Fixed issue with bogus offset increment involving sendfile on GNU/Linux. Adding support for SNI.
  • Fix for per-worker daemon pipes enabled with MHD_USE_SUSPEND_RESUME that were not closed in MHD_stop_daemon. -MH
  • Fixing warnings and build issue if --disable-https is given to configure. -CG

New in libmicrohttpd 0.9.32 (Dec 5, 2013)

  • Security fix: do not read past 0-terminator when unescaping strings
  • Eliminating theoretical stack overflow by limiting length of URIs in authentication headers to 32k (only applicable if the application explicitly raised the memroy limits, and only applies to MHD_digest_auth_check). Issue was reported by Florian Weimer. -CG
  • Introduce state to mark connections in suspended state (with epoll); add missing locking operations in MHD_suspend_connection. Fix definition of MHD_TLS_CONNECTION_INIT. -MH/JC
  • Fixing issue in PostProcessor when getting partial boundary at the beginning, expanding test suite. -CG
  • Implementing faster processing of upload data in multipart encoding (thanks to performance analysis by Adam Homolya). -CG
  • Adding support for connection flow control via MHD_suspend_connection and MHD_resume_connection. -CG

New in libmicrohttpd 0.9.31 (Oct 22, 2013)

  • Fixing build issues on OS X with CLOCK_MONOTONIC not being implemented on OS X. -CG
  • Make libmicrohttpd play nicely with upcoming libgcrypt 1.6.0. -CG
  • Improved configure checks for cURL. -CG
  • Signal connection termination as OK (and not as ERROR) if the stream was terminated by the callback returning MHD_CONTENT_READER_END_OF_STREAM. Also, release response mutex before calling the termination callback, to avoid possible deadlock if the client destroys the response in the termination callback (due to non-recursiveness of the lock). -CG
  • Adding #define MHD_HTTP_HEADER_ACCESS_CONTROL_ALLOW_ORIGIN. -CG
  • Also pass MHD connection handle in URI log callback. -CG
  • Improved check for proper OpenSSL version for libmicrospdy. -CG
  • Set IPV6_V6ONLY socket option correctly when IPv6 is enabled (MHD_USE_IPv6) but not dual stack (MHD_USE_DUAL_STACK) -MW

New in libmicrohttpd 0.9.30 (Sep 3, 2013)

  • Fix use-after-free in epoll()-mode on read error.
  • Fixing build issues on FreeBSD. -CG
  • Started to implement #3008 (RFC 2616, section 8.1.4 says HTTP server SHOULD terminate connection if the client closes it for writing via TCP FIN, so we should continue to try to read and react differently if recv() returns zero). -CG
  • Fix #3007 (build issue if messages are disabled). -CG
  • Fix build issue if SOCK_NONBLOCK/EPOLL_CLOEXEC are not defined (as is the case on older glibc versions). -CG

New in libmicrohttpd 0.9.29 (Aug 26, 2013)

  • Updated manual, documenting W32 select/shutdown issue.
  • Disable use of 'shutdown' on W32 always as winsock doesn't properly behave with half-closed connections.
  • Fixing issue with pipelining not working as desired.
  • Fix HTTP 1.1 compliance with respect to not returning content-length headers for successful "CONNECT" requests. Note that for unsuccessful "CONNECT" requests with an empty response body, users must now explicitly set the content-length header.
  • Fixing build issue (missing #ifdef) in conjunction with --disable-messages.

New in libmicrohttpd 0.9.28 (Jul 20, 2013)

  • Fix issue where connections were not cleaned up when 'MHD_run_from_select' was used. Adding experimental TURBO mode.
  • Added MHD_OPTION_CONNECTION_MEMORY_INCREMENT to allow users to specify a custom value for incrementing read buffer sizes (#2899). -MH
  • Added option 'MHD_USE_DUAL_STACK' to support a single daemon for IPv4 and IPv6 without the application having to do the binding. -CG
  • Added option 'MHD_USE_PIPE_FOR_SHUTDOWN' to cleanly support 'MHD_quiesce_daemon' with thread pools and per-connection threads (we then need a pipe for shutdown, but if 'MHD_quiesce_daemon' is not used, we do not want to require the use of a pipe; introducing the pipe after the threads have been started can also fail, so the application needs to tell us early on). -CG
  • Removed locking calls for thread modes that do not need them.
  • Reorganized way to obtain connection's event loop state.
  • Added sorted XDLL for connections with default timeout to avoid having to loop over all connections to determine current timeout (custom per-connection timeouts are in another list which is iterated each time). -CG
  • Added MHD_CONNECTION_INFO_CONNECTION_FD to allow clients direct access to connection socket; useful for COMET applications that need to disable NAGLE. -CG
  • Merged libmicrospdy code with libmicrohttpd build system.

New in libmicrohttpd 0.9.27 (May 13, 2013)

  • Improved documentation and code style a bit. Releasing libmicrohttpd 0.9.27. -CG
  • Added 'MHD_quiesce_daemon' to allow application to stop processing new incoming connections while finishing ongoing requests. -CG
  • Added MHD demonstration code 'src/examples/demo.c'. -CG
  • Adding new API call 'MHD_run_from_select' to allow programs running in 'external select mode' to reduce the number of 'select' calls by a factor of two. -CG
  • Performance improvements, updated documentation. Make better use of available memory pool memory for reading (especially important for large POST uploads); improve post processor speed by internally adjusting the buffer size by 4 bytes to ensure "round" IO sizes given a "round" post processor buffer size argument. Note that applications that previously added 4 bytes to the post processor buffer size might now perform worse. Using the new 'demo' example, POST upload speed increased from ~90 MB/s to ~120 MB/s for a large file (note that the improvement comes from better aligned disk IO; without disk IO, the speed was (and remains) at ~1500 MB/s on this system). -CG

New in libmicrohttpd 0.9.19 (Feb 1, 2012)

  • Fixed handling of garbage prior to first multipart boundary
  • Fixed postprocessor failure for applications that enclosed boundary in quotes (#2120).
  • Added configure check for sin_len in 'struct sockaddr' and adding code to initialize this field if it exists now.

New in libmicrohttpd 0.9.1 (Sep 13, 2010)

  • Added ability to specify external unescape function.
  • "microhttpd.h" now includes the right headers for GNU/Linux stems unless MHD_PLATFORM_H is defined (in which case it is assumed that the right headers were already determined by some configure-like process).

New in libmicrohttpd 0.9.0 (Jul 28, 2010)

  • Adding support for sendfile on Linux.
  • Adding support for systemd-style passing of an existing listen socket as an option. IPv6 sockets now only bind to IPv6 (if platform supports this). -CG