[core] TCP latency optimization
[core] provide tag to include other YAML files from the configuration file
[core] accept sequence of mappings for path-level configuration
[core] fix broken support for TCP Fast Open in OS X
[access-log] provide directive to emit request-level errors
[access-log] emit values of all set-cookie headers concatenated
[fastcgi] fix connection failure when fastcgi.spawn is used with an uid
[file] more pre-defined MIME types
[http2][proxy] recognize link rel=preload headers in interim response as a trigger to push resources
[http1][http2] validate characters used in the headers
[http1][http2] notify error downstream when an error occurred while generating a response
[http1][http2] fix resource leak upon upgrade failure to HTTP/2
[http2] add http2-push-preload directive to turn off H2 push being initiated by link rel=preload header
[http2] add support for cache-digest header
[http2] drop host header in HTTP/2 layer
[http2] don't use etag for calculating casper cookie
[http2] add support for H2 debug state
[mruby] add dos_detector mruby handler
[mruby] add DSL for access control lists (acl)
[mruby] share mruby state and constants between handlers
[mruby] add library for address-block-based access control
[proxy] add an option to connect to upstream using PROXY protocol
[proxy] don't escape : in URI path
[proxy] preserve received URLs as much as possible
[proxy] add an option to prevent emiting x-forwarded-* headers
[proxy] cache TLS session used for upstream connections
[proxy] turn on/off on-the-fly compression based on the x-compress-hint header
[ssl] set add_lock callback to prevent unnecessary lock-add-unlock
[ssl] add support for OpenSSL 1.1.0
[status] collect and report HTTP statistics
[status] report additional stats when jemalloc is used
[throttle] add new handler for throttling the response bandwidth
[libh2o] provide h2o_rand that calls the appropriate random function depending on the OS
[libh2o] do not require use of picohttpparser.h when using the HTTP/1 client
[libh2o] install library files to the correct location
[misc] provide crash-handler directive to customize crash logging
[misc] guess the default location of h2o.conf
[misc] allow to disable libuv even when it is found
[misc] add font/woff2 to the default mime-type mapping
[misc] mark JavaScript and JSON files as compressible by default
- [file] don't use `readdir_r` on Linux, Solaris #1046#1052
(Frederik Deweerdt, Kazuho Oku)
- [http2] fix negative error code sent when cancelling a pushed
stream #1039 (Frederik Deweerdt)
- [http2] fix a bug that may cause a stream to stall #1040 (Frederik
Deweerdt)
- [http2] fix a bug that reset the stream when receiving HEADERS
after PRIORITY #1043 (Frederik Deweerdt)
- [mruby] fix mruby handler becoming unusable after failed connection
in http_request on FreeBSD #1062 (Kazuho Oku)
- [fastcgi] setenv should displace HTTP headers
#996 (Kazuho Oku)
- [http2] fix buffer overrun
#972 (Frederik Deweerdt)
- [misc] fix build error when libuv is not found
#1008 (nextgenthemes)
- [misc] fix assertion failure when YAML alias and merge is used in
certain way
#1011 (Kazuho Oku)
- [fastcgi] fix internal server error when PHP returns a huge header
#958 (Kazuho Oku)
- [http2] recognize link header containing multiple links
#950 (Frederik Deweerdt)
- [libh2o] fix resource leaks upon startup failure
#936 (David CARLIER)
- [libh2o] do not require linking to libbrotli externally
#941 (Kazuho Oku)
- [core][breaking change] do not automatically append `/` to path-level
configuration
#820 (Kazuho Oku)
- [core] support `<<` in configuration file
#786 (Kazuho Oku)
- [core] configurable server: header
#877 (Frederik Deweerdt)
- [core] add directive for customizing the path of temporary buffer files
#911 (Kazuho Oku)
- [core] fix crash when receiving SIGTERM during start-up
#878 (Frederik Deweerdt)
- [core] spawn the configured number of DNS client threads
#880 (Sean McArthur)
- [access-log] add directive for logging protocol-specific values
#801 (Kazuho Oku)
- [access-log][fastcgi][mruby] per-request environment variables
#868 (Kazuho Oku)
- [access-log] fix memory leak during start-up
#864 (Frederik Deweerdt)
- [compress] on-the-fly compression using brotli, as well as
directives to tune the compression parameters
#802, #924 (Kazuho Oku, Frederik Deweerdt)
- [compress][expires] refrain from setting redundant `cache-control` tokens
#846 (Kazuho Oku)
- [file] `file.file` directive for mapping specific file
#822 (Kazuho Oku)
- [file] `send-compress` directive (renamed from `send-gzip`) to support
pre-compressed files using brotli
#802 (Kazuho Oku)
- [file] cache open failures
#836 (Kazuho Oku)
- [http2] support for nopush attribute in the link rel=preload header
#863 (Satoh Hiroh)
- [http2] support for push after delegation
#866 (Kazuho Oku)
- [http2] ignore push indications made by a pushed response
#897 (Kazuho Oku)
- [http2] accept `capacity-bits` attribute of the `http2-casper`
configuration directive
#882 (Satoh Hiroh)
- [http2] avoid memcpy during HPACK huffman encoding
#749 (Kazuho Oku)
- [http2] fix potential stall when http2-max-concurrent-requests-per-
connection is set to a small number
#912 (Kazuho Oku)
- [http2] refuse push a single resource more than once
#903 (Kazuho Oku)
- [http2] fix assertion failure when receiving more data than expected
during upgrade
#922 (Frederik Deweerdt)
- [mruby] add $H2O_ROOT/share/h2o/mruby to the default load path
#851 (Kazuho Oku)
- [proxy] add support for HTTPS
#875 (Kazuho Oku)
- [proxy] add an configuration option to pass through `x-forwarded-
proto` request header
#883 (Kazuho Oku)
- [proxy] log error when upstream connection is unexpectedly closed
#895 (Frederik Deweerdt)
- [ssl] update libressl to 2.2.7
#898 (Kazuho Oku)
- [ssl] support ECDH curves other than P-256
#841 (Kazuho Oku)
- [ssl] add support for text-based memcache protocol
#854 (Kazuho Oku)
- [ssl] fix memory leak when using TLS resumption with the memcached backend
#856 (Kazuho Oku)
- [ssl] fix "undefined subroutine" error in the OCSP updater
#872 (Masayuki Matsuki)
- [ssl] cap the number of OCSP updaters running concurrently
#891 (Kazuho Oku)
- [ssl] fix use-after-free when using session resumption with memcached backend
#923 (Frederik Deweerdt)
- [libh2o] add API for obtaining the socket descriptor
#886 (Frederik Deweerdt)
- [libh2o] add API to selectively disable automated I/O on reads and writes
#890 (Frederik Deweerdt)
- [libh2o] bugfix: h2o_mem_swap swaps only the first 256 bytes
#924 (Frederik Deweerdt)
- [status] introduce the status handler
#848 (Kazuho Oku)
- [misc] install examples
#850 (James Rouzier)
- [security fix][http2] fix use-after-free on premature connection close
(CVE-2016-4817)
#920 (Frederik Deweerdt)
- [core] fix SIGBUS when temporary disk space is full
#910 (Kazuho Oku)
- [mruby] do not drop `link` header
#913 (Kazuho Oku)
- [mruby] fix memory leak during initialization
#906 (Frederik Deweerdt)
- [mruby] fix race condition in mruby regex handler
#908 (Kazuho Oku)
- [libh2o] fix crash in h2o_url_stringify
#918 (Kazuho OKu)
This is a bug-fix release of 1.7 series, fixing following issues found in 1.7.1. The release also updates the bundled LibreSSL to 2.2.7 that includes a fix for CVE-2016-2107.
- [core] fix incorrect line no. reported in case of YAML syntax error
- [core] fix build issue / memory leak when the poll backend is used
- [core] when building, repect `EXTRA_LIBS` passed from command line
- [core] fix memory leaks during start-up
- [core] fix stability issue when receiving a signal
- [fastcgi] fix off-by-one buffer overflow
- [fastcgi][mruby] install missing script files
- [mruby] truncate body to the size specified by `content-length`
- [mruby] fix error when reading a ruby script >= 64K
- [proxy] fix I/O error when transferring files over 2GB on FreeBSD / OS X
- [ssl] bugfix: use of session ticket not disabled even when configured to
- [libh2o] provide pkg-config .pc files
- [libh2o] include version numbers in the .so filename
- [doc] refine documentation
Upstream changes:
1.2.0 2015-04-14 07:13:00+0000
- [core] bundle libyaml #248 (Kazuho Oku)
- [core] implement master-worker process mode and daemon mode (bundles Server::Starter) #258#270 (Kazuho Oku)
- [file] more mime-types by default #250#254#280 (Tatsuhiko Kubo, George Liu, Kazuho Oku)
- [file][http1] fix connection being closed if the length of content is zero #276 (Kazuho Oku)
- [headers] fix heap overrun during configuration #251 (Kazuho Oku)
- [http2] do not delay sending PUSH_PROMISE #221 (Kazuho Oku)
- [http2] reduce memory footprint under high load #271 (Kazuho Oku)
- [http2] fix incorrect error sent when number of streams exceed the limit #268 (Kazuho Oku)
- [proxy] fix heap overrun when building request sent to upstream #266#269 (Moto Ishizawa, Kazuho Oku)
- [proxy] fix laggy response in case the length of content is zero #274#276 (Kazuho Oku)
- [SSL] fix potential stall while reading data from client #268 (Kazuho Oku)
- [SSL] bundle LibreSSL #236#272 (Kazuho Oku)
- [SSL] obtain source-level compatibility with BoringSSL #228 (Kazuho Oku)
- [SSL] add directive `listen.ssl.cipher-preference` for controlling the selection logic of cipher-suites #233 (Kazuho Oku)
- [SSL] disable TLS compression #252 (bisho)
- [libh2o] fix C++ compatibility (do not use empty struct) #225 (Kazuho Oku)
- [libh2o] search external dependencies using pkg-config #227 (Kazuho Oku)
- [misc] fix GCC version detection bug used for controlling compiler warnings #224 (Kazuho Oku)
- [misc] check merory allocation failures in socket pool #265 (Tatsuhiko Kubo)
1.1.1 2015-03-09 06:12:00+0000
- [proxy] fix crash on NetBSD when upstream connection is persistent #217 (Kazuho Oku)
- [misc] fix compile error on FreeBSD #211#212 (Syohei Yoshida)
1.1.0 2015-03-06 06:41:00+0000
- [core][file] send redirects appending '/' as abs-path redirects #209 (Kazuho Oku)
- [headers] add directives for manipulating response headers #204 (Kazuho Oku)
- [http2] do not send a corrupt response if header value is longer than 126 bytes #193 (Kazuho Oku)
- [http2] fix interoperability issue with nghttp2 0.7.5 and above 5c42eb1 (Kazuho Oku)
- [proxy] send `via` header to upstream #191 (Kazuho Oku)
- [proxy] resolve hostname asynchronously #207 (Kazuho Oku)
- [proxy] distribute load between upstream servers (using `rand()`) #208 (Kazuho Oku)
- [proxy] fix a bug that may cause a corrupt `location` header being forwarded #190 (Kazuho Oku)
- [reproxy] add support for `x-reproxy-url` header #187#197 (Daisuke Maki, Kazuho Oku)
1.0.1 2015-02-23 05:50:00+0000
- [core] change backlog size from 65,536 to 65,535 #183 (Tatsuhiko Kubo)
- [http2] fix assertion failure in HPACK encoder #186 (Kazuho Oku)
- [http2] add `extern` to some global variables that were not marked as such #178 (Kazuho Oku)
- [proxy] close persistent upstream connection if client abruptly closes the stream #188 (Kazuho Oku)
- [proxy] fix internal state corruption in case upstream sends response headers divided into multpile packets #189 (Kazuho Oku)
- [SSL] add host header to OCSP request #176 (Masaaki Hirose)
- [libh2o] do not require header files under `deps/` when using libh2o #173 (Kazuho Oku)
- [libh2o] fix compile error in examples when compiled with `H2O_USE_LIBUV=0` #177 (Kazuho Oku)
- [libh2o] in example, add missing / after the reference path #180 (Matthieu Garrigues)
- [misc] fix invalid HTML in sample page #175 (Deepak Prakash)
1.0.0 2015-02-18 20:01:00+0000
- [core] add redirect handler #150 (Kazuho Oku)
- [core] add `pid-file` directive for specifying the pid file #164 (Kazuho Oku)
- [core] connections accepted by host-specific listeners should not be handled by handlers of other hosts #163 (Kazuho Oku)
- [core] (FreeBSD) fix a bug that prevented the standalone server from booting when run as root #160 (Kazuho Oku)
- [core] switch to pipe-based interthread messaging #154 (Kazuho Oku)
- [core] use kqueue on all BSDs #156 (Kazuho Oku)
- [access-log] more logging directives: %H, %m, %q, %U, %V, %v #158 (Kazuho Oku)
- [access-log] bugfix: header values were not logged when specified using uppercase letters #157 (Kazuho Oku)
- [file] add application/json to defalt MIME-types #159 (Tatsuhiko Kubo)
- [http2] add support for the finalized version of HTTP/2 #166 (Kazuho Oku)
- [http2] fix issues reported by h2spec v0.0.6 #165 (Kazuho Oku)
- [proxy] merge the cookie headers before sending to upstream #161 (Kazuho Oku)
- [proxy] simplify the configuration directives (and make persistent upstream connections as default) #162 (Kazuho Oku)
- [SSL] add configuration directive to preload DH params #148 (Jeff Marrison)
- [libh2o] separate versioning scheme using H2O_LIBRARY_VERSION_* #167 (Kazuho Oku)
0.9.2 2015-02-10 04:17:00+0000
- [core] graceful shutdown on SIGTERM #119 (Kazuho Oku)
- [core] less TCP errors under high load #81 (Kazuho Oku)
- [file] add support for HEAD requests #110 (Mark Hoersken)
- [http1] MSIE workaround (send `Cache-Control: private` in place of Vary) #114 (Kazuho Oku)
- [http2] support server-push #133 (Kazuho Oku)
- [http2] fix spurious RST_STREAMS being sent #132 (Kazuho Oku)
- [http2] weight-based distribution of bandwidth #135 (Kazuho Oku)
- [proxy] added configuration directive `proxy.preserve-host` #112 (Masahiro Nagano)
- [proxy] sends X-Forwarded-For and X-Forwarded-Proto headers #112 (Masahiro Nagano)
- [proxy] stability improvements #61 (Kazuho Oku)
- [misc] adjustments to make the source code more analyzer-friendly #113,#117 (Nick Desaulniers, Maks Naumov)
0.9.1 2015-01-19 21:13:00+0000
- added configuration directives: ssl/cipher-suite, ssl/ocsp-update-interval, ssl/ocsp-max-failures, expires, file.send-gzip
- [http2] added support for draft-16 (draft-14 is also supported)
- [http2] dependency-based prioritization
- [http2] improved conformance to the specification
- [SSL] OCSP stapling (automatically enabled by default)
- [SSL] fix compile error with OpenSSL below version 1.0.1
- [file] content negotiation (serving .gz files)
- [expires] added support for Cache-Control: max-age
- [libh2o] libh2o and the header files installed by `make install`
- [libh2o] fix compile error when used from C++
- automatically setuids to nobody when run as root and if `user` directive is not set
- automatically raises RLIMIT_NOFILE
- uses all CPU cores by default
- now compiles on NetBSD and other BSD-based systems
H2O is a very fast HTTP server written in C. It can also be used as a library.
Features
* HTTP/1.0, HTTP/1.1
* HTTP/2
* WebSocket
* TLS
* static file serving
* reverse proxy
* access-logging
* graceful restart and self-upgrade