<feed xmlns='http://www.w3.org/2005/Atom'>
<title>gun.git/test/handlers, branch http2-websocket</title>
<subtitle>HTTP/1.1, HTTP/2 and Websocket client for Erlang/OTP.
</subtitle>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/gun.git/'/>
<entry>
<title>Add tunnel_SUITE testing all 3-layer combinations</title>
<updated>2020-10-03T15:30:36+00:00</updated>
<author>
<name>Loïc Hoguin</name>
<email>essen@ninenines.eu</email>
</author>
<published>2020-09-25T11:52:31+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/gun.git/commit/?id=2f42047d6cec210186d703e31e5fd970b1ea4e33'/>
<id>2f42047d6cec210186d703e31e5fd970b1ea4e33</id>
<content type='text'>
The test suite is 216 tests with a tunnel created via two
proxies leading to one origin server. The tests are for
example socks5_h2_https where socks5 identifies the first
SOCKS5 proxy, h2 the second HTTP/2 CONNECT proxy and https
the secure HTTP/1.1 origin server.

The test not only sets up the tunnel and does a request
(or sends/receives data in the case of raw origin servers)
but also confirms that the stream_info and info data is
correct.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The test suite is 216 tests with a tunnel created via two
proxies leading to one origin server. The tests are for
example socks5_h2_https where socks5 identifies the first
SOCKS5 proxy, h2 the second HTTP/2 CONNECT proxy and https
the secure HTTP/1.1 origin server.

The test not only sets up the tunnel and does a request
(or sends/receives data in the case of raw origin servers)
but also confirms that the stream_info and info data is
correct.
</pre>
</div>
</content>
</entry>
<entry>
<title>Add HTTP/2 CONNECT tests with Cowboy as origin</title>
<updated>2020-09-21T13:51:56+00:00</updated>
<author>
<name>Loïc Hoguin</name>
<email>essen@ninenines.eu</email>
</author>
<published>2020-07-27T15:24:16+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/gun.git/commit/?id=048224a888b3331796e66dd974c6d75234e09036'/>
<id>048224a888b3331796e66dd974c6d75234e09036</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Add tests for cookie_ignore_informational option</title>
<updated>2020-04-16T12:44:23+00:00</updated>
<author>
<name>Loïc Hoguin</name>
<email>essen@ninenines.eu</email>
</author>
<published>2020-04-16T12:44:23+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/gun.git/commit/?id=6599fc9a0ce1721271cc070f6d54a677d466c583'/>
<id>6599fc9a0ce1721271cc070f6d54a677d466c583</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Make Gun use the cookie store when configured to</title>
<updated>2020-03-12T17:08:16+00:00</updated>
<author>
<name>Loïc Hoguin</name>
<email>essen@ninenines.eu</email>
</author>
<published>2020-03-11T18:45:16+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/gun.git/commit/?id=87d0bfff926892d2dc0a55a3dc45d8c5f8a682f3'/>
<id>87d0bfff926892d2dc0a55a3dc45d8c5f8a682f3</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Implement graceful shutdown</title>
<updated>2019-09-05T09:28:07+00:00</updated>
<author>
<name>Loïc Hoguin</name>
<email>essen@ninenines.eu</email>
</author>
<published>2019-08-08T14:33:09+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/gun.git/commit/?id=c974b4334e7ab660f9bf95653696c3663c02ead3'/>
<id>c974b4334e7ab660f9bf95653696c3663c02ead3</id>
<content type='text'>
The graceful shutdown is implemented through a new 'closing'
state. This state is entered under different circumstances
depending on the protocol.

The gun:shutdown/1 function is now implemented and documented.
It allows shutting down the connection gracefully regardless
of the current state of the connection and for all protocols.
The behavior is entirely dependent on the protocol.

For HTTP/1.1 the connection stays up only until after the
current stream is complete; other streams are immediately
canceled.

For HTTP/2 a GOAWAY frame is sent and existing streams
continue to be processed. The connection is closed after
all streams are processed and the server's GOAWAY frame
is received.

For Websocket a close frame is sent. The connection is
closed when receiving the server's close frame.

In all cases the closing_timeout option defines how long
we wait, as a maximum, before closing the connection after
the graceful shutdown was started.

The graceful shutdown is also initiated when the owner
process goes away; when sending an HTTP/1.1 request
with the connection: close header; when receiving an
HTTP/1.1 response with the connection: close header;
when receiving an HTTP/1.0 response without a connection
header; when the server sends a GOAWAY HTTP/2 frame;
or when we send or receive a Websocket close frame.

Along with these changes, the gun:ws_send/2 function
now accepts a list of frames as argument. Those frames
may include a close frame that initiates the graceful
shutdown.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The graceful shutdown is implemented through a new 'closing'
state. This state is entered under different circumstances
depending on the protocol.

The gun:shutdown/1 function is now implemented and documented.
It allows shutting down the connection gracefully regardless
of the current state of the connection and for all protocols.
The behavior is entirely dependent on the protocol.

For HTTP/1.1 the connection stays up only until after the
current stream is complete; other streams are immediately
canceled.

For HTTP/2 a GOAWAY frame is sent and existing streams
continue to be processed. The connection is closed after
all streams are processed and the server's GOAWAY frame
is received.

For Websocket a close frame is sent. The connection is
closed when receiving the server's close frame.

In all cases the closing_timeout option defines how long
we wait, as a maximum, before closing the connection after
the graceful shutdown was started.

The graceful shutdown is also initiated when the owner
process goes away; when sending an HTTP/1.1 request
with the connection: close header; when receiving an
HTTP/1.1 response with the connection: close header;
when receiving an HTTP/1.0 response without a connection
header; when the server sends a GOAWAY HTTP/2 frame;
or when we send or receive a Websocket close frame.

Along with these changes, the gun:ws_send/2 function
now accepts a list of frames as argument. Those frames
may include a close frame that initiates the graceful
shutdown.
</pre>
</div>
</content>
</entry>
<entry>
<title>Add flow control</title>
<updated>2019-08-05T17:57:13+00:00</updated>
<author>
<name>Loïc Hoguin</name>
<email>essen@ninenines.eu</email>
</author>
<published>2019-08-02T12:30:08+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/gun.git/commit/?id=611f9a9b78cab4005892e13dffb7a2c8e44580ee'/>
<id>611f9a9b78cab4005892e13dffb7a2c8e44580ee</id>
<content type='text'>
Flow control is disabled by default. The initial flow value
must be set to enable it (either for the entire connection
or on a per-request basis). Flow applies to all HTTP streams
as well as Websocket. HTTP/2 pushed streams receive the same
value as their originating stream.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Flow control is disabled by default. The initial flow value
must be set to enable it (either for the entire connection
or on a per-request basis). Flow applies to all HTTP streams
as well as Websocket. HTTP/2 pushed streams receive the same
value as their originating stream.
</pre>
</div>
</content>
</entry>
<entry>
<title>Rename ws_echo test handler to ws_echo_h</title>
<updated>2019-07-25T08:40:12+00:00</updated>
<author>
<name>Loïc Hoguin</name>
<email>essen@ninenines.eu</email>
</author>
<published>2019-07-25T08:40:12+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/gun.git/commit/?id=293ca3d58f64cd716e8b1f84330c29f229d5a4f2'/>
<id>293ca3d58f64cd716e8b1f84330c29f229d5a4f2</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Add push_promise_start/push_promise_end events</title>
<updated>2019-07-24T11:04:56+00:00</updated>
<author>
<name>Loïc Hoguin</name>
<email>essen@ninenines.eu</email>
</author>
<published>2019-07-24T11:04:56+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/gun.git/commit/?id=8c6adf73d9d3fa1ebb49d4b9bd71caab1815dcb2'/>
<id>8c6adf73d9d3fa1ebb49d4b9bd71caab1815dcb2</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Add response_inform/response_headers/response_end events</title>
<updated>2019-07-02T15:29:40+00:00</updated>
<author>
<name>Loïc Hoguin</name>
<email>essen@ninenines.eu</email>
</author>
<published>2019-07-02T15:28:44+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/gun.git/commit/?id=4a6503186bf3a72880e7c99be76406550aeded96'/>
<id>4a6503186bf3a72880e7c99be76406550aeded96</id>
<content type='text'>
This covers many scenarios but more need to be added.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This covers many scenarios but more need to be added.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix stripping stream reference in gun_http</title>
<updated>2018-12-31T13:28:09+00:00</updated>
<author>
<name>Piotr Bober</name>
<email>piotr.bober@relayr.io</email>
</author>
<published>2018-12-17T14:27:48+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/gun.git/commit/?id=32779615616fe3ae052eef94d838ecc9180045a7'/>
<id>32779615616fe3ae052eef94d838ecc9180045a7</id>
<content type='text'>
An invalid stream reference (the websocket tuple wrapper)
was sent in the gun_data message.

Also moves autobahn to its own test suite.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
An invalid stream reference (the websocket tuple wrapper)
was sent in the gun_data message.

Also moves autobahn to its own test suite.
</pre>
</div>
</content>
</entry>
</feed>
