Commit Graph

55 Commits

Author SHA1 Message Date
Marten Seemann
6b82e46e0c use the prefix logger for client, server and proxy 2018-05-29 20:52:54 +08:00
Marten Seemann
948eef3e42 create a logger interface and use it everywhere 2018-04-04 13:03:28 +07:00
Marten Seemann
6712a8d023 don't log the PeerGoingAway error in the h2quic client 2018-03-11 15:42:20 +07:00
Lorenzo Saino
10acc677aa Make RoundTripper.RoundTrip(...) return if client timeout expires
Currently, the implementation of h2quic.RoundTripper.RoundTrip(req
*http.Request) ignores the context of req. As a result, if the
RoundTripper is used as transport of an http.Client with a timeout value
set, that is ignored.

For example, in the following snippet, client.Do(req) does not promptly
return if the task takes more than client.Timeout to complete.

    client := http.Client{
        Timeout: 50 * time.Millisecond,
        Transport = &h2quic.RoundTripper{}
    }
    req, err := http.NewRequest("GET", "https://www.example.com", nil)
    response, err := client.Do(req)

This commit updates h2quic.client.RoundTrip(req *http.Request) to return
an error if the request is cancelled.
2018-02-25 20:58:37 +00:00
Marten Seemann
11af98e338 run misspell in gometalinter 2018-02-23 22:39:08 +08:00
Marten Seemann
ef56cae9dc implement a Dial function for the h2quic.RoundTripper
If Dial is set, it will be used for dialing new QUIC connections. If it
is nil, quic.DialAddr will be used.
2018-01-21 13:47:06 +11:00
Marten Seemann
19c12a9470 refactor the loop reading the header stream in the h2quic client 2018-01-04 08:35:25 +07:00
Marten Seemann
fc4adb4775 improve error handling in the h2quic client for header stream handling
When the underlying QUIC stream is closed, the close error should be
returned. This always happens when receiving a CONNECTION_CLOSE from the
server.
Furthermore, this adds a missing break statement in the case when
receiving an invalid HTTP request.
2018-01-03 09:07:18 +07:00
Julien Schmidt
06c87af606 remove unused encryptionLevel from client 2017-12-06 10:51:28 +01:00
Marten Seemann
f662822486 use stream 0 for the crypto stream when using TLS 2017-11-04 15:22:07 +07:00
Marten Seemann
9cb7480050 rename connection ID truncation to connection ID omission 2017-09-29 22:52:54 +07:00
Marten Seemann
f1ada87dcf make the protocol package internal 2017-08-30 00:19:44 +07:00
Marten Seemann
bf6030a855 implement a function to close the h2quic.RoundTripper
h2quic.RoundTripper.Close() closes all QUIC connections that this
roundtripper has used.
2017-07-12 18:56:47 +07:00
Marten Seemann
ee6ca8dfb4 expose the quic.Config in the h2quic.RoundTripper 2017-07-10 22:00:03 +07:00
Marten Seemann
abb9594af8 change order of function parameters for the h2quic.client constructor 2017-07-10 22:00:03 +07:00
Marten Seemann
cb81a95ceb make the dependency-injected dialAddr in h2quic.client a global variable
It's only used for testing, so there's no need to have in each
h2quic.client instance.
2017-07-10 21:59:58 +07:00
krish7919 (Krish)
755dedf1ff Add keepalive support for clients in quic.Config
Fixes #525.
2017-07-05 20:29:28 +02:00
Marten Seemann
a851aaacda remove the tls.Config from the quic.Config
The tls.Config now is a separate parameter to all Listen and Dial
functions in the quic package.
2017-07-03 22:12:09 +02:00
Marten Seemann
987905149b run gofmt to fix ordering of imports 2017-06-13 18:07:22 +02:00
Marten Seemann
c0b09c8646 make utils an internal package 2017-06-09 22:28:40 +02:00
Marten Seemann
05d7bc91ef fix race condition when handling the header stream fails in h2quic client 2017-06-06 17:08:00 +02:00
Marten Seemann
c122428cb6 simply the dialing in the h2quic client
Fixes #620.
Dialing is now done lazily, when a request is executed.
2017-06-04 09:41:51 +02:00
Marten Seemann
c2a89e6b78 improve error message in the h2quic client 2017-06-03 17:41:17 +02:00
Marten Seemann
9054e5205f don't pass the roundtripper to the h2quic client 2017-06-02 23:08:14 +02:00
Marten Seemann
4c3d4960bb privatize the h2quic client 2017-06-01 20:14:07 +02:00
Marten Seemann
6623abf3d1 return handshake errors in h2quic Client.Do 2017-05-16 00:56:10 +08:00
Marten Seemann
33a9b5aae4 add more tests for Dial in the h2quic client 2017-05-16 00:56:09 +08:00
Marten Seemann
fb77a79b2b close the response chan on header stream erros in h2quic client 2017-05-16 00:56:08 +08:00
Marten Seemann
612323985b remove the ConnStateCallback from the client
Dial and DialAddr return once the connection is forward secure. There is
currently no option to get the session earlier, this will be added later.
2017-05-16 00:56:02 +08:00
Marten Seemann
9fbec90ced enable connection ID truncation for the h2quic client 2017-05-13 17:19:57 +08:00
Marten Seemann
dc782e78eb fix race condition when saving the encryption level in h2quic.Client
fixes #551
2017-04-18 14:30:25 +07:00
Marten Seemann
d73e99624d drop support for Go 1.6 2017-04-11 15:38:36 +07:00
Marten Seemann
6d0ac39cf7 Merge pull request #482 from lucas-clemente/fix-479
send a HeadersStreamDataDecompressFailure error when H2 frame parsing fails
2017-03-15 17:15:21 +07:00
Marten Seemann
7f416a06c4 send a HeadersStreamDataDecompressFailure error when H2 frame parsing fails
fixes #479
2017-03-15 11:11:38 +07:00
Marten Seemann
4f16503ab9 save the TLS config in the h2quic client
fixes #476
2017-03-15 09:18:06 +07:00
Marten Seemann
f5bbe316e8 use OpenStreamSync to open the data stream in the h2quic client 2017-03-06 14:55:46 +07:00
Marten Seemann
a972c7a21e return the encryption level of a packet when decrypting it 2017-02-25 08:27:08 +07:00
Marten Seemann
6f27b7f70d handle stream opening errors in h2quic client 2017-02-22 23:03:10 +07:00
Marten Seemann
96edca5219 privatize the client, only expose Dial functions 2017-02-22 23:03:09 +07:00
Marten Seemann
cd465ae0b5 move utils.Stream to quic.Stream 2017-02-22 23:03:09 +07:00
Marten Seemann
824f122a79 remove unused StreamCallback 2017-02-22 23:03:08 +07:00
Marten Seemann
f47142eaac remove stream ID from OpenStream() method 2017-02-22 23:03:05 +07:00
Marten Seemann
268841f0cc add a TLSClientConfig to the QUIC RoundTripper
fixes #407
2017-02-04 10:28:00 +07:00
Marten Seemann
e3b34f2120 implement sending of the request body 2017-01-14 19:00:22 +07:00
Marten Seemann
6dd297379b set EndStream header in HeadersFrame 2017-01-14 18:58:47 +07:00
Marten Seemann
128bad04e5 add option to disable compresson to QuicRoundTripper 2017-01-14 18:58:45 +07:00
Marten Seemann
d028624f77 implement compressed requests and responses 2017-01-14 18:58:45 +07:00
Marten Seemann
edb34b1765 close the quic client on protocol errors in h2quic client 2017-01-14 18:58:45 +07:00
Marten Seemann
44271a8ec8 fix mutexes for writing requests in h2quic client 2017-01-14 18:58:45 +07:00
Marten Seemann
40a6577dc3 implement a basic QUIC RoundTripper 2017-01-14 18:58:44 +07:00