aboutsummaryrefslogtreecommitdiffstats
path: root/ebin
AgeCommit message (Collapse)Author
2024-03-26Initial HTTP/3 implementationHEADmasterhttp3Loïc Hoguin
Since quicer, which provides the QUIC implementation, is a NIF, Gun cannot depend directly on it. In order to enable QUIC and HTTP/3, users have to set the GUN_QUICER environment variable: export GUN_QUICER=1 Gun is now tested using GitHub Actions. As a result OTP-24+ is now required. In addition, the number of OTP releases tested has been reduced; only the latest of each major version is now tested. This also updates Erlang.mk.
2024-03-14Gun 2.1.02.1.0Loïc Hoguin
2024-03-14Use public_key:cacerts_get/0 when possibleLoïc Hoguin
Also "fix" many TLS test failures due to yet more changes in the default options for TLS. Also small changes to make Dialyzer happy.
2024-03-14Update Cowlib to 2.13.0Loïc Hoguin
2023-04-28Gun 2.0.12.0.1Loïc Hoguin
2023-01-23Update version to 2.0.02.0.0Loïc Hoguin
2022-12-05Document Websocket subprotocol negotiationLoïc Hoguin
2021-05-24Gun 2.0.0-rc.22.0.0-rc.2Loïc Hoguin
2021-02-07Initial commit for Gun poolsLoïc Hoguin
The approach taken here is very similar to what browsers are doing. A separate pool is created for each host/port/scope. The authority (host header) is used to determine which pool will execute requests. A connection process is semi-randomly chosen, from the connections that have capacity. Maximum capacity is determined by the protocol (the HTTP/2 setting set by the server is used, for example). Multiple processes can process requests/responses on the same connection concurrently. There is no need to "give back" the response to the pool, the number of ongoing streams is maintained via an event handler. The implementation is currently not strict, there may be more attempts to create requests than there is capacity. I'm not sure if it should be made strict or if Gun should just wait before sending requests (it only matters in the HTTP/2 case at the moment). When there is no connection with capacity available in the pool (because they have too many streams, or are reconnecting, or any other reason), checking out fails. There is no timeout to wait for a connection to be available. On the other hand the checkout_retry option allows setting multiple timeouts to retry checking out a connection. Each retry attempt's wait time can have a different value. The initial implementation of this work was sponsored by Kobil and made at the suggestion of Ilya Khaprov.
2020-11-12Change version to Gun 2.0.0-rc.1Loïc Hoguin
We are about one week before the actual release.
2020-09-21Initial success for h2 CONNECT -> https CONNECT -> httpsLoïc Hoguin
2020-09-21Refactor protocol handling via gun_protocolsLoïc Hoguin
2020-09-21First working HTTPS over secure HTTP/2Loïc Hoguin
Has a timer:sleep/1 though because there is currently no way to wait for the TLS handshake to complete.
2020-09-21Initial HTTP/2 CONNECT implementationLoïc Hoguin
2020-03-25Gun 2.0.0-pre.22.0.0-pre.2Loï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
2019-09-27Gun 2.0.0-pre.12.0.0-pre.1Loï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-22Initial support for Socks5Loïc Hoguin
2019-05-08Add event_handler with init/connect_start/connect_endLoïc Hoguin
2019-03-25Add the gun_tls_proxy transport for TLS over TLS supportLoïc Hoguin
2018-10-01Gun 1.3.01.3.0Loïc Hoguin
2018-09-17Gun 1.2.01.2.0Loïc Hoguin
2018-08-06Gun 1.1.01.1.0Loïc Hoguin
2018-07-27Gun 1.0.01.0.0Loïc Hoguin
2018-06-04Gun 1.0.0-rc.11.0.0-rc.1Loïc Hoguin
2018-06-04Remove the dependency on RanchLoïc Hoguin
We instead of two new modules, gun_tcp and gun_tls. They only have 6 functions so far, much less than what Ranch provided before. Also renames ssl to tls where applicable. It's still possible to use the ssl transport option but it's now undocumented.
2018-06-03Rename gun_data and gun_sse to gun_data_h and gun_sse_hLoïc Hoguin
2018-06-03Change messages to gun_upgrade and gun_ws with stream referenceLoïc Hoguin
2018-01-22Gun 1.0.0-pre.51.0.0-pre.5Loïc Hoguin
2017-11-16Use ci.erlang.mk for managing tested Erlang versionsLoïc Hoguin
2017-08-12Remove SPDY; document HTTP/2Loïc Hoguin
I just replaced "SPDY" with "HTTP/2" in the documentation. I suspect that's all that's needed, but if there's something off we can fix it later.
2017-04-28Add Gun Websocket handlers and protocol supportLoïc Hoguin
This functionality can be used to implement custom protocols on top of Websocket, but may also be used to decode frame contents on the fly if necessary. The default_protocol option defines what module should be used when no protocol was selected. The protocols option is a list of key/value pairs used to select the handler depending on the protocol that the server accepted. The feature is currently experimental.
2017-04-27Add content handlers and built-in SSE supportLoïc Hoguin
Content handlers are a chain of modules implementing callbacks that receive the body of responses and may modify it (for example for decompressing the content) or act upon it (like sending a message to the owner process. The gun_sse content handler module can be used to translate text/event-stream events on the fly and deliver them to the owner process as a {gun_sse...} message. This feature is currently not documented and is only tested against a public server. It requires an up to date Cowlib.
2016-11-16Update Erlang.mk and related changesLoïc Hoguin