aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2020-03-12Make Gun use the cookie store when configured toLoïc Hoguin
2020-03-06Add additional cookie expiration testsLoïc Hoguin
2020-03-05Implement gun_cookies:gc/1 and :session_gc/1Loïc Hoguin
2020-03-05Add the public suffix check to set_cookieLoïc Hoguin
2020-03-04Initial implementation of the gun_cookies cookie storeLoïc Hoguin
2020-02-27Remove two unnecessary clausesLoïc Hoguin
As reported by Dialyzer.
2020-02-27Use specific error when HTTP/2 receives HTTP/1 responseLoïc Hoguin
2020-02-27Add a test getting preface errors in the 'DOWN' reasonLoïc Hoguin
2020-02-27Detect invalid HTTP/2 preface errorsLoïc Hoguin
And make sure all HTTP/2 connection_error(s) result in a gun_down message containing the error. In the preface case we do not send a gun_error message (because there's no stream open yet) and gun_down was always saying normal. Also make sure the human readable reason is included in the gun_error message, if any.
2020-02-10Handle cow_http2_machine timeoutsLoïc Hoguin
2019-11-04Fix a crash introduced in the previous commitLoïc Hoguin
2019-10-17Use maps for looking up HTTP/2 streamsLoïc Hoguin
This should be much faster than using lists:keyfind and friends. This matters for connections that have a lot of concurrent streams.
2019-10-08Fix retrying on disconnect with retry=1Loïc Hoguin
2019-10-01Cowlib no longer returns lingering_data tuplesLoïc Hoguin
2019-10-01Don't try upgrading 101 responses with no/bad Upgrade headerLoïc Hoguin
Also rework the different handle_head scenarios in separate functions.
2019-09-27Gun 2.0.0-pre.12.0.0-pre.1Loïc Hoguin
2019-09-26Add the migration guide to 2.0Loïc Hoguin
2019-09-26Document the cow_http2_machine optionsLoïc Hoguin
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.
2019-09-26More README updatesLoïc Hoguin
2019-09-26Update the READMELoïc Hoguin
2019-09-26Don't send duplicate gun_error messages to the same processLoïc Hoguin
2019-09-26Remove UnprocessedStreams from the gun_down messageLoïc Hoguin
2019-09-26Add reply_to option to ws_upgrade; remove notowner entirelyLoïc Hoguin
The reply_to option is also propagated when we switch protocols.
2019-09-26Add a function to change the connection ownerLoïc Hoguin
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.
2019-09-24Add auto-ping to Websocket and a silence_pings optionLoïc Hoguin
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.
2019-09-24Reject requests/data when using WebsocketLoïc Hoguin
2019-09-24Initial support for raw send/recv operationsLoïc Hoguin
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.
2019-09-23Properly error out on HTTP/1.0 Websocket upgrade attemptsLoïc Hoguin
2019-09-23Set server_name_indication for TLS handshakesLoïc Hoguin
This essentially reverts to the old behavior for initial TLS handshakes, and improves TLS support for the Socks/HTTP proxy cases.
2019-09-23Use the proper options type for socks/ws statesLoïc Hoguin
2019-09-23Accept all cow_http2_machine optionsLoïc Hoguin
2019-09-23Reduce the #http_state sizeLoïc Hoguin
The version is still kept in the state even if it's an option because it's useful to have there and it's just a tiny atom.
2019-09-23Remove 'protocol' option from connect_destination()Loïc Hoguin
It was deprecated and replaced by 'protocols' in a previous version.
2019-09-23Document sending N Websocket frames in the guideLoïc Hoguin
2019-09-22Account for Windows' 3-connect pattern in shutdown_SUITELoïc Hoguin
When Windows can't connect it retries 2 more times with 500ms wait in-between by default.
2019-09-22Increase a timeout to avoid an intermittent test failureLoïc Hoguin
I'm not exactly sure why it works but it seems to be solid now. I think the issue is around timeouts in the test and handler being too close to one another.
2019-09-22Remove the old eunit HTTP/2 testLoïc Hoguin
It is better covered by the shutdown_SUITE.
2019-09-22Cancel the existing keepalive when switching protocolsLoïc Hoguin
2019-09-22Document Socks supportLoïc Hoguin
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.
2019-09-22Add CONNECT->Socks5->HTTP testsLoïc Hoguin
Also fix the multiple TLS proxies tests from the previous commit.
2019-09-22Add more tests with two Socks5 proxiesLoïc Hoguin
We now properly support TCP across two TLS proxies, and TLS across two TCP/TLS proxies.
2019-09-22Always switch_protocolLoïc Hoguin
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.
2019-09-22Rework state transitions resulting from from protocol changesLoïc Hoguin
2019-09-22Improve retrieval of keepalive optionLoïc Hoguin
2019-09-22Supports going through multiple Socks proxiesLoïc Hoguin
This commit also reworks the switch_protocol command. The `P | {P, Opts}` type is used here as well. This allows us to remove the code specific to Websocket. In addition a few new protocol functions allow us to declare what's the name of the options key for the protocol and what the capabilities are with regard to keepalive.
2019-09-22Add Socks5->HTTP/2 testsLoïc Hoguin
Also consolidate the ALPN code in the tls_handshake state rather than doing it in CONNECT/Socks separately. Also improves the origin tests by sending a message once the handshake is completed instead of having timeouts.
2019-09-22Add tests for TLS proxy and TCP/TLS serverLoïc Hoguin
2019-09-22Support connecting to HTTPS server via TCP Socks5Loïc Hoguin
2019-09-22Further consolidation of TLS handshakesLoïc Hoguin
2019-09-22Simplify HandshakeEventLoïc Hoguin