[appendix] == Migrating from Ranch 1.5 to 1.6 Ranch 1.6 added the ability to suspend and resume listeners. It also deprecates a number of features and add interfaces that will be used in Ranch 2.0. Ranch 1.6 is compatible with Erlang/OTP 18.0 onward. Support for older releases has been removed. === Features added * Listeners can now be suspended/resumed without stopping existing connection processes. This effectively closes the listening socket and stops the acceptor processes. * Transport options can now be updated for suspended listeners. * The `Socket` argument given when the protocol starts has been deprecated. In Ranch 2.0 the socket will be obtainable only by calling `ranch:handshake/1,2`. * Ranch-specific transport options and socket options are now better separated. When passing Ranch-specific transport options, Ranch now expects to receive a map, in which case socket options are passed in the `socket_opts` value. When there are only socket options they can be passed to Ranch directly as a convenience. * Any future transport option will only be added to the map type. This includes transport options added in this release. * The transport option `ack_timeout` was renamed to `handshake_timeout` in the map type. * The `cacerts` socket option is now silenced in error logs just like the `certs` and `key` options. * The manual has been heavily updated and now features one manual page per function and module, complete with a per-function changelog, examples and more. === Experimental features added * It is now possible to configure the restart intensity for `ranch_sup` using the OTP application environment. This feature will remain undocumented unless there is popular demand for it. * Add the transport option `logger` that allows configuring which logger module will be used. The logger module must follow the interface of the new `logger` module in Erlang/OTP 21, or be set to `error_logger` to keep the old behavior. === Changed behaviors * Transport modules must now implement `Transport:handshake/2,3` which deprecates and will replace `Transport:accept_ack/1` in Ranch 2.0. It returns a new socket and can therefore be used for implementing TLS upgrade mechanisms. === New functions * The functions `ranch:suspend_listener/1` and `ranch:resume_listener/1` were added. In addition the function `ranch:get_state/1` can be used to obtain the running state of a listener. * A function `ranch:wait_for_connections/3` was added. * A function `ranch:handshake/1,2` was added to replace the function `ranch:accept_ack/1`. === Bugs fixed * The specs for the function `Transport:sendfile/2,4,5` have been corrected. The type used for the filename was too restricting.