Age | Commit message (Collapse) | Author |
|
|
|
The cookie_ignore_informational has been moved to http_opts and
http2_opts.
Also fix an issue when using 'protocols' in gun:open.
When connecting via TLS the protocol's options were
discarded.
|
|
There is a race condition: After receiving data, before setting the
socket back to {active, once}, the server may have closed the socket
or an error may have occurred. Since the socket was in passive mode,
no message is received. Handling the return value of setopts solves
the issue.
Amended by Loïc Hoguin to handle the return value from the active/1
function call.
|
|
There are still small issues left to fix. In particular the
set_cookie command should be replaced with doing the same
in the protocol itself so that the scheme is correct. So
CookieStore must be propagated to all callbacks.
|
|
|
|
It doesn't provide any new information compared to the other
events.
|
|
|
|
|
|
In the documentation headers passed to ws_upgrade are typed as
gun:req_headers(), however if a map of headers is passed (which is
allowed by the type), the gun process will crash when trying to operate
on it as if it were a list.
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
Also fixes all the tests. Lots of work remain around protocols
(how best to pass the base stream_ref to them? maybe the current
solution, maybe a new argument to Protocol:init) and strengthen
the concept of stream_ref, at least with its own type.
|
|
|
|
|
|
Has a timer:sleep/1 though because there is currently no way
to wait for the TLS handshake to complete.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Also add a test for CONNECT to TLS via 2 TLS proxies.
|
|
The call to Transport:sockname/1 can return an error if the
socket was closed as we were gathering info. In that case we
simply do not fill in the address and port information.
|
|
Also contains a few small changes and Dialyzer fixes.
|
|
|
|
|
|
|
|
The details are not given for now. The best would be to
document them in Cowlib and refer to that documentation
instead of duplicating the information in both the Gun
and Cowboy manuals.
|
|
|
|
The reply_to option is also propagated when we switch protocols.
|
|
While at it the gun:info/1 function has been fixed to work
even when we are in the not_connected state, and the owner
is now also returned.
|
|
The auto-ping will at regular interval send a ping frame.
The silence_pings option defaults to true. It can be set
to false when the user needs to receive ping/pong frames.
|
|
|
|
Gun can now be used to send or receive arbitrary data in the
following scenarios:
* Directly after connecting to a server (this is not terribly
useful but it works nevertheless due to the Gun architecture)
* After connecting through one or more Socks and/or HTTP proxies.
This allows using Gun's proxy capabilities to access servers
located beyond firewalls.
* After performing an HTTP/1.1 Upgrade. This allows using Gun
to implement custom protocols that require upgrading from
an HTTP/1.1 connection.
As there is still no support for HTTP/2 CONNECT for the time
being, there are no relevant streams attached to those use
cases and therefore the raw protocol currently expects users
to use 'undefined' as the StreamRef value. This is not a
final decision and will most likely produce a Dialyzer
warning at this time.
|
|
This essentially reverts to the old behavior for initial TLS
handshakes, and improves TLS support for the Socks/HTTP proxy
cases.
|
|
|
|
It was deprecated and replaced by 'protocols' in a previous
version.
|
|
|
|
Also correct various Socks related types. This commit also
adds a new gun:protocols/0 type as a simpler way of describing
preferred protocols. The protocol/opts tuple is also documented.
This commit also fixes an issue with the default value for the
preferred protocols when using CONNECT over TLS. It was
mistakenly not enabling http2 by default.
|
|
Also fix the multiple TLS proxies tests from the previous commit.
|
|
We now properly support TCP across two TLS proxies, and
TLS across two TCP/TLS proxies.
|
|
When doing a CONNECT from http to http or from socks to socks
we may want to use different configuration options. Switching
the protocol explicitly helps us achieve that. It will also
signal through events that a protocol switch occurred.
|
|
|