aboutsummaryrefslogtreecommitdiffstats
path: root/src
AgeCommit message (Collapse)Author
2019-08-05Add flow controlLoïc Hoguin
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.
2019-07-27Fix ssl and other typesLoïc Hoguin
2019-07-27Add the retry_fun option for different backoff strategiesLoïc Hoguin
2019-07-27Postpone operations until connectedTony Han
2019-07-26Add the origin_changed eventLoïc Hoguin
2019-07-26Add the transport_changed eventLoïc Hoguin
Also test protocol_changed over CONNECT.
2019-07-26Data received after RST_STREAM counts toward windowTony Han
2019-07-26Add tls_handshake events for CONNECT through TLS proxiesLoïc Hoguin
2019-07-25Add tls_handshake events for CONNECT through TCP proxiesLoïc Hoguin
2019-07-25Fix missing response_end event for HTTP/1.0 body_closeLoïc Hoguin
2019-07-24Add the cancel event for local/remote stream cancellationLoïc Hoguin
2019-07-24Add push_promise_start/push_promise_end eventsLoïc Hoguin
2019-07-22Split domain lookup/connect/TLS handshake and add eventsLoïc Hoguin
This changes the way we connect to servers entirely. We now have three states when connecting (domain_lookup, connect and tls_handshake when applicable) and as a result three corresponding timeout options. Each state has a start/end event associated and the event data was tweaked to best match each event. Since the TLS handshake is separate, the transport_opts option was also split into two: tcp_opts and tls_opts.
2019-07-15Add Websocket frames related eventsLoïc Hoguin
2019-07-13Add ws_upgrade/protocol_changed eventsLoïc Hoguin
And ensure that Websocket triggers all the request/response events.
2019-07-03Add the response_trailers eventLoïc Hoguin
2019-07-03Add the response_start eventLoïc Hoguin
Thought it needed cow_http2_machine changes but everything was available. For HTTP/1.1 it is triggered when receiving data while expecting headers. For HTTP/2 it is triggered after we have received a HEADERS frame for streams in idle state.
2019-07-02Add response_inform/response_headers/response_end eventsLoïc Hoguin
This covers many scenarios but more need to be added.
2019-06-02Add request_start, request_headers and request_end eventsLoïc Hoguin
2019-05-13Add the terminate eventLoïc Hoguin
2019-05-13Add the disconnect event callbackLoïc Hoguin
2019-05-08Add event_handler with init/connect_start/connect_endLoïc Hoguin
2019-04-26Add upgrade/ws tuples to gun:await/2,3,4Loïc Hoguin
2019-04-26Add specs to await functions, document error type betterLoïc Hoguin
2019-04-26Distinguish between error types in await functionsLoïc Hoguin
2019-04-26Rename owner_gone into owner_downLoïc Hoguin
2019-04-26Add the supervise option to start without supervisorLoïc Hoguin
2019-04-26No longer error out when the owner exitsLoïc Hoguin
No need to have the error repeated in the logs by the Gun process.
2019-04-25Fix Websocket upgrade host header when it's an IP addressSergey Tupchiy
2019-04-25Remove explicit call to dbg:start/0Alexander Mihajlovic
This fixes a bug in `gun` when trying to open 2 connections with tracing enabled. You can recreate it like so: > application:ensure_all_started(gun). > gun:open("localhost", 80, #{trace => true}). > gun:open("localhost", 80, #{trace => true}). The second call fails with a cause clause exception. You'll observe the same exception by: > dbg:start(). > dbg:start(). Ultimately this may be a bug in OTP, but since `dbg:start/0` is undocumented I'm inclined to give it the benefit of the doubt. Regardless, since the docs[1] clearly state that calling `dbg:tracer/0` is the proper way to start the default tracer message receiver, I argue that calling `dbg:start/0` is a bug in `gun`. [1]: http://erlang.org/doc/man/dbg.html
2019-04-24Fix Dialyzer warningsLoïc Hoguin
2019-04-24Prevent ssl:setopts from blocking gun_tls_proxyLoïc Hoguin
2019-04-22Use ssl:ssl_accept/2 in tests to support OTP 20+Loïc Hoguin
ssl:handshake/2 was introduced in OTP 21.
2019-04-22Add origin_scheme checks to testsLoïc Hoguin
2019-04-22Make gun_tls_proxy work for HTTP/2 connectionsLoïc Hoguin
2019-04-22Make gun_tls_proxy a gen_statemLoïc Hoguin
There is now a not_connected state that is used to postpone events that can't be processed when the proxy socket is not ready.
2019-04-19Integrate gun_tls_proxy into gun properLoïc Hoguin
Still need to add ALPN support and to wait before trying to send data on a proxied TLS connection that didn't complete its handshake.
2019-03-25Add the gun_tls_proxy transport for TLS over TLS supportLoïc Hoguin
2019-01-09Add function gun:stream_info/2Loïc Hoguin
2019-01-06Lowercase header names automatically and accept more typesLoïc Hoguin
Header names can now be provided as binary, string or atom and Gun no longer requires them to be in lowercase. The list of headers can also be provided as a map as well.
2019-01-06Fix KilledStreams value for HTTP for connection: close responsesLoïc Hoguin
2019-01-05Fix atom hostnamesLoïc Hoguin
2019-01-05Fix transfer-encoding precedence over content-lengthLoïc Hoguin
2019-01-05Clarify option errors in the manual for gun:open/open_unixLoïc Hoguin
Also fix an http into http2 for one option.
2019-01-05Don't send empty data chunksLoïc Hoguin
This was a bug in the case of HTTP/1.1 and an inconvenience in the case of HTTP/2.
2019-01-05Ensure Gun retries connecting immediatelyLoïc Hoguin
2019-01-03Update copyright yearsLoïc Hoguin
2019-01-03Consolidate origin server test helpersLoïc Hoguin
Also fixes an issue with switch_transport introduced when converting the Gun process to gen_statem.
2019-01-02Don't send the default port in the host header for HTTP/2Loïc Hoguin
2019-01-02Don't send the default port in the host header for HTTP/1.1Loïc Hoguin