<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ranch.git, branch 1.7.0</title>
<subtitle>Socket acceptor pool for TCP protocols.
</subtitle>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/ranch.git/'/>
<entry>
<title>Update the migration guide for 1.7</title>
<updated>2018-11-14T10:53:27+00:00</updated>
<author>
<name>Loïc Hoguin</name>
<email>essen@ninenines.eu</email>
</author>
<published>2018-11-14T10:53:27+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/ranch.git/commit/?id=7423a7bb6dde5edc26283544956ae7387fa69688'/>
<id>7423a7bb6dde5edc26283544956ae7387fa69688</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Document the PROXY-related functions; prepare 1.7.0</title>
<updated>2018-11-14T09:55:23+00:00</updated>
<author>
<name>Loïc Hoguin</name>
<email>essen@ninenines.eu</email>
</author>
<published>2018-11-14T09:55:23+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/ranch.git/commit/?id=2f502078fd0f56e3e61e58f1d57ae15f9f736ffe'/>
<id>2f502078fd0f56e3e61e58f1d57ae15f9f736ffe</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Always recompile ct_helper in CI</title>
<updated>2018-10-23T13:41:04+00:00</updated>
<author>
<name>Loïc Hoguin</name>
<email>essen@ninenines.eu</email>
</author>
<published>2018-10-23T13:41:04+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/ranch.git/commit/?id=4d0ae7e8c646d00eb868fdee11756b1770a3b976'/>
<id>4d0ae7e8c646d00eb868fdee11756b1770a3b976</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Add ranch:recv_proxy_header/2</title>
<updated>2018-10-23T10:10:53+00:00</updated>
<author>
<name>Loïc Hoguin</name>
<email>essen@ninenines.eu</email>
</author>
<published>2018-10-23T10:10:53+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/ranch.git/commit/?id=d2720842a63dc7bc6ac01d9e2866bfa78cb39aa5'/>
<id>d2720842a63dc7bc6ac01d9e2866bfa78cb39aa5</id>
<content type='text'>
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.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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.
</pre>
</div>
</content>
</entry>
<entry>
<title>Correct a typo in a manual page title</title>
<updated>2018-10-10T14:30:54+00:00</updated>
<author>
<name>Loïc Hoguin</name>
<email>essen@ninenines.eu</email>
</author>
<published>2018-10-10T14:30:54+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/ranch.git/commit/?id=8652000c0c40feee8f664b58ccb5cdfa60441a5f'/>
<id>8652000c0c40feee8f664b58ccb5cdfa60441a5f</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix a race condition on restart after listener_sup crash</title>
<updated>2018-10-10T14:22:19+00:00</updated>
<author>
<name>Loïc Hoguin</name>
<email>essen@ninenines.eu</email>
</author>
<published>2018-10-10T14:22:19+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/ranch.git/commit/?id=7d3c65a6db5e267eb0a3f2503c9fa1264b559e73'/>
<id>7d3c65a6db5e267eb0a3f2503c9fa1264b559e73</id>
<content type='text'>
The race condition occurs when the restart is faster than
the cleaning up. With this commit the restart will perform
the cleanup if it was not done beforehand.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The race condition occurs when the restart is faster than
the cleaning up. With this commit the restart will perform
the cleanup if it was not done beforehand.
</pre>
</div>
</content>
</entry>
<entry>
<title>Make the acceptors exit rather than crash on socket close</title>
<updated>2018-10-10T11:39:31+00:00</updated>
<author>
<name>Loïc Hoguin</name>
<email>essen@ninenines.eu</email>
</author>
<published>2018-10-10T11:36:00+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/ranch.git/commit/?id=2b8ef9b606381f4e5912f815cdf0d5accf00409f'/>
<id>2b8ef9b606381f4e5912f815cdf0d5accf00409f</id>
<content type='text'>
This will avoid some unnecessary logs by default.
SASL can be enabled to log these events.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This will avoid some unnecessary logs by default.
SASL can be enabled to log these events.
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove a Dialyzer warning in a test protocol</title>
<updated>2018-10-10T10:12:41+00:00</updated>
<author>
<name>Loïc Hoguin</name>
<email>essen@ninenines.eu</email>
</author>
<published>2018-10-10T10:12:41+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/ranch.git/commit/?id=19195e64996e465fdf4788c076cbefe89a153fd3'/>
<id>19195e64996e465fdf4788c076cbefe89a153fd3</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Add ranch_tcp:recv_proxy_header/2</title>
<updated>2018-10-10T09:55:50+00:00</updated>
<author>
<name>Loïc Hoguin</name>
<email>essen@ninenines.eu</email>
</author>
<published>2018-10-10T09:54:50+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/ranch.git/commit/?id=4b9970bcd725972dbd845e07c34a8ef8409ec04c'/>
<id>4b9970bcd725972dbd845e07c34a8ef8409ec04c</id>
<content type='text'>
This uses the undocumented function gen_tcp:unrecv/2.

Tests have been added for both gen_tcp and ssl connections,
including sending data in the same first packet, at least
for gen_tcp (ssl tests may or may not end up buffering some
of the TLS handshake before the recv call, but there's no
guarantees).
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This uses the undocumented function gen_tcp:unrecv/2.

Tests have been added for both gen_tcp and ssl connections,
including sending data in the same first packet, at least
for gen_tcp (ssl tests may or may not end up buffering some
of the TLS handshake before the recv call, but there's no
guarantees).
</pre>
</div>
</content>
</entry>
<entry>
<title>Add functions to build the PROXY protocol header</title>
<updated>2018-10-09T14:59:20+00:00</updated>
<author>
<name>Loïc Hoguin</name>
<email>essen@ninenines.eu</email>
</author>
<published>2018-10-09T14:59:20+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/ranch.git/commit/?id=1cc7de15b6f04835faa2f6505669cb7f90c29796'/>
<id>1cc7de15b6f04835faa2f6505669cb7f90c29796</id>
<content type='text'>
Also add tests of the type parse(build(Info)), including
for testing the TLVs and the padding/checksum verification
options.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Also add tests of the type parse(build(Info)), including
for testing the TLVs and the padding/checksum verification
options.
</pre>
</div>
</content>
</entry>
</feed>
