aboutsummaryrefslogtreecommitdiffstats
path: root/src/ranch.erl
AgeCommit message (Collapse)Author
2018-11-14Document the PROXY-related functions; prepare 1.7.0Loïc Hoguin
2018-10-23Add ranch:recv_proxy_header/2Loïc Hoguin
This is the function that should be called regardless of TCP or TLS being used. The proper usage for this function is: {ok, ProxyInfo} = ranch:recv_proxy_header(Ref, Timeout), {ok, Socket} = ranch:handshake(Ref), ... Ranch takes care of everything else under the hood. Transports now need to have a Transport:recv_proxy_header/2 function. For ranch_ssl the function gets the port from the sslsocket() record and then calls ranch_tcp:recv_proxy_header/2 with it. This means that two undocumented features are currently used for this, but the interface is really nice so that's a sacrifice worth doing. Also worth noting is that OTP 22 should have an alternative for gen_tcp:unrecv/2 so the only real issue is about the sslsocket() record at the moment.
2018-10-04Fix inconsistent naming of filter_user_options/2 argumentKim Shrier
2018-08-13Export the function ranch:normalize_opts/1Loïc Hoguin
This can be used by Cowboy to better deal with the switch to maps for transport options and avoid the log message when using lists.
2018-08-01Remove R16 compatibilityLoïc Hoguin
Ranch is now made for and tested on 18+ only.
2018-08-01get_status now reports running when acceptors_sup is restartingj.uhlig
2018-08-01Fix ranch:wait_for_connections_loop/4 intervalLJZN
2018-07-18Add one manual per function for the ranch moduleLoïc Hoguin
Also review and update the ranch(7) manual and fix a few specs.
2018-07-05Add a logger transport optionLoïc Hoguin
I had to use the process dictionary to work around the current interface for one log call. You have been warned.
2018-07-04Return errors from Transport:handshakeLoïc Hoguin
The "normal" errors are still silenced when calling ranch:handshake.
2018-07-04Better distinguish between Ranch and socket optionsLoïc Hoguin
A map should now be used when specifying transport options that contain more than just socket options. It is still possible to pass a list of socket options directly as a convenience. The ack_timeout is renamed to handshake_timeout when specified as a map. This corresponds to the new function ranch:handshake/1,2 that will be favored in Ranch 2.0. Specifying Ranch-specific options via the proplist will no longer be possible starting from Ranch 2.0.
2018-07-02Mark ranch:accept_ack/1 as deprecatedLoïc Hoguin
2018-07-02Introduce Transport:handshake/1,2j.uhlig
This commit deprecates Transport:accept_ack/1 in favor of a new forward-compatible function. Transport:handshake/1,2 will use ssl:handshake/2,3 from Ranch 2.0 onward.
2018-05-17Add a function to wait for number of connectionsj.uhlig
LH: Reworked validation style and added a -dialyzer attribute to acceptor_SUITE to silence expected errors.
2018-05-02Add suspend/resume of listeners and update of transport optionsj.uhlig
This allows graceful draining of connections, updating transport options on a running listener without having to drop connections and other similar scenarios. Note that when updating transport options the listener must be suspended which means that new connections will be rejected until the listener is resumed.
2018-04-10Ranch 1.5.01.5.0Loïc Hoguin
2018-03-14Fix ranch:info/0 and ranch:procs/2 in embedded modej.uhlig
2017-06-07Update Copyright to 20171.4.0Loïc Hoguin
2017-05-31Deprecated ranch:start_listener/6 and child_spec/6Loïc Hoguin
The NumAcceptors argument has been moved to transport option num_acceptor, which defaults to 10. The functions now take one less argument. The old functions are still here, though deprecated.
2017-01-31Format eacces errors in a more readable wayMichael Klishin
Amended with small whitespace changes and removing an unused clause.
2016-11-24Add ranch:info/0 and ranch:procs/2Loïc Hoguin
Provides detailed information about Ranch listeners
2016-11-24Don't attempt to start ssl anymoreLoïc Hoguin
Ranch now depends on SSL. Users embedding listeners in their supervision tree are expected to depend on SSL too if they are using it.
2016-11-24Update copyright yearLoïc Hoguin
2016-11-15Track removed connectionsJames Fish
2016-11-15Improve error reportingAlexey Lebedeff
Simplify some return values, improve error messages for eaddrinuse and no_cert. Amended to add tests and simpler code. Also hides the contents of cert and key transport options, if any.
2016-11-08Blacklist listen options instead of whitelistLoïc Hoguin
Dialyzer will still complain about unknown options, but at least users won't be stuck waiting for an upstream update.
2016-09-19Renaming NbAcceptors to NumAcceptorsferigis
2015-12-18Fix node shutdown getting stuckLoïc Hoguin
When SSL is stopped before Ranch, the acceptors crash and Ranch tries to restart them. The problem is that the ranch_ssl:listen/1 call was trying to start the SSL application to make sure it works (an old artifact from when releases were not ubiquitous). Because the application controller is trying to shutdown Ranch, and Ranch tries to tell it to start an application, everything would get stuck. To avoid a breaking change, we move this in the start_listener call (or child_spec). Note that there are still logs when the SSL application is closed, because the acceptors crash. But at least we don't block node shutdown anymore. In Ranch 2.0, we will implement the proper fix which is to simply depend on the SSL application normally. Nowadays, it's not too difficult to build a release that excludes applications we don't want, although we should document that in the Ranch user guide.
2015-08-25Add ranch:get_addr/1Loïc Hoguin
2015-08-22Print a warning when discarding an option on listener startupLoïc Hoguin
2015-08-20Filter out all unknown options, not just 2-tuple onesLoïc Hoguin
For example 'binary' was making things crash.
2015-08-18Welcome to 2015Loïc Hoguin
2015-08-18Update the list of allowed transport optionsLoïc Hoguin
We are now up to date with regard to transport options we should accept for the listening socket. Documentation of existing options has been updated with regard to recent changes in the OTP docs and type specifications.
2015-08-17Don't pass Ranch-specific options down to transportsLoïc Hoguin
Should fix Dialyzer issues. The options are now also documented in the Ranch module, and there's new ranch:opt(), ranch_tcp:opt() and ranch_ssl:opt() for use in third party code.
2015-03-06Fix start_listener specLoïc Hoguin
2014-06-10Update copyright yearsLoïc Hoguin
2014-06-03Fix inherit listen options for accepted socketSlava Yurin
Order of options in listen is undocumented but significant. Now user option will replace default value if user set it.
2013-12-07Get rid of a ton of pointless commentsLoïc Hoguin
All of it can be found in the manual, which defines what the code must do, and is always up to date unlike the code comments.
2013-12-07Gracefully shutdown when stop_listener/1 is calledLoïc Hoguin
Implements the `shutdown` option as documented previously.
2013-11-26Add accept_ack on all transports and ack_timeout transport optionLoïc Hoguin
Doing this in the connection process allows us to free acceptors to start accepting more connections quicker, especially under load.
2013-11-25Small fixes to specsLoïc Hoguin
2013-05-16Fix typespecs for ranch:filter_options/3Loïc Hoguin
2013-05-16Add ranch:ref() typeLoïc Hoguin
2013-04-01Remove ranch_listener and replace ListenerPid by RefLoïc Hoguin
We just don't need this process anymore. Less, simpler code! API changes: * Protocols start_link first argument is now Ref instead of ListenerPid * ranch:accept_ack/1 argument is now Ref instead of ListenerPid * ranch_listener:remove_connection/1 becomes ranch:remove_connection/1 and its argument is now Ref instead of ListenerPid Ref is the name of the listener given as first argument to start_listener/6.
2013-01-15Allow raw socket options for TCP and SSLFred Hebert
This patch lets the user set and use raw socket options as described in inet:setopts/2 documentation. The raw options can be useful to use TCP features that are platform- specific and not supported in inet in general, such as TCP_DEFER_ACCEPT or TCP_LINGER2 in linux stacks, for example.
2012-12-24Improve max_connections typeLoïc Hoguin
It is non_neg_integer() | infinity. Introduce the type `ranch:max_conns/0` for easier manipulation.
2012-12-24Add ranch:set_max_connections/2 and get_max_connections/1Loïc Hoguin
2012-12-21Ensure transport module is loaded before checking exportsAndrew Majorov
Tests were constantly failing without this patch. It seems ct starts erlang code server in interactive mode, so application module loading is defered.
2012-12-20Add {socket, Socket} transport option, for accepting on existing socketsAndrew Thompson
2012-12-20Return {error, badarg} if start_listener got a bad transport moduleLoïc Hoguin