|
Name |
|
Date |
Size |
#Lines |
LOC |
| .. | | 03-May-2022 | - |
| .circleci/ | H | 04-Dec-2020 | - | 57 | 54 |
| .github/workflows/ | H | 04-Dec-2020 | - | 186 | 156 |
| .travis/ | H | 04-Dec-2020 | - | 14 | 6 |
| benchmark/ | H | 04-Dec-2020 | - | 121 | 95 |
| docs/ | H | 03-May-2022 | - | | |
| example/ | H | 04-Dec-2020 | - | 483 | 409 |
| fuzzing/ | H | 04-Dec-2020 | - | 1,765 | 1,563 |
| http3/ | H | 04-Dec-2020 | - | 4,068 | 3,360 |
| integrationtests/ | H | 04-Dec-2020 | - | 6,074 | 5,200 |
| internal/ | H | 04-Dec-2020 | - | 26,206 | 20,713 |
| interop/ | H | 04-Dec-2020 | - | 857 | 707 |
| logging/ | H | 04-Dec-2020 | - | 1,371 | 978 |
| metrics/ | H | 04-Dec-2020 | - | 303 | 262 |
| qlog/ | H | 04-Dec-2020 | - | 3,045 | 2,665 |
| quictrace/ | H | 04-Dec-2020 | - | 2,198 | 1,819 |
| .editorconfig | H A D | 04-Dec-2020 | 52 | 6 | 4 |
| .gitignore | H A D | 04-Dec-2020 | 210 | 18 | 15 |
| .golangci.yml | H A D | 04-Dec-2020 | 950 | 51 | 47 |
| .travis.yml | H A D | 04-Dec-2020 | 829 | 32 | 26 |
| Changelog.md | H A D | 04-Dec-2020 | 3.6 KiB | 91 | 66 |
| LICENSE | H A D | 04-Dec-2020 | 1.1 KiB | 22 | 17 |
| README.md | H A D | 04-Dec-2020 | 2.8 KiB | 55 | 33 |
| buffer_pool.go | H A D | 04-Dec-2020 | 1.8 KiB | 81 | 53 |
| buffer_pool_test.go | H A D | 04-Dec-2020 | 1.2 KiB | 56 | 45 |
| client.go | H A D | 04-Dec-2020 | 9 KiB | 330 | 261 |
| client_test.go | H A D | 04-Dec-2020 | 18.9 KiB | 623 | 569 |
| closed_session.go | H A D | 04-Dec-2020 | 2.9 KiB | 113 | 84 |
| closed_session_test.go | H A D | 04-Dec-2020 | 1.4 KiB | 57 | 45 |
| codecov.yml | H A D | 04-Dec-2020 | 584 | 23 | 22 |
| config.go | H A D | 04-Dec-2020 | 3.4 KiB | 105 | 91 |
| config_test.go | H A D | 04-Dec-2020 | 5 KiB | 156 | 134 |
| conn.go | H A D | 04-Dec-2020 | 1.6 KiB | 61 | 47 |
| conn_ecn.go | H A D | 04-Dec-2020 | 3.1 KiB | 114 | 98 |
| conn_ecn_test.go | H A D | 04-Dec-2020 | 3.6 KiB | 129 | 106 |
| conn_generic.go | H A D | 04-Dec-2020 | 229 | 14 | 8 |
| conn_helper_darwin.go | H A D | 04-Dec-2020 | 240 | 16 | 9 |
| conn_helper_linux.go | H A D | 04-Dec-2020 | 206 | 12 | 6 |
| conn_id_generator.go | H A D | 04-Dec-2020 | 4.5 KiB | 138 | 116 |
| conn_id_generator_test.go | H A D | 04-Dec-2020 | 6.7 KiB | 171 | 149 |
| conn_id_manager.go | H A D | 04-Dec-2020 | 6.8 KiB | 215 | 172 |
| conn_id_manager_test.go | H A D | 04-Dec-2020 | 13.9 KiB | 363 | 328 |
| conn_test.go | H A D | 04-Dec-2020 | 889 | 34 | 27 |
| conn_windows.go | H A D | 04-Dec-2020 | 749 | 38 | 31 |
| crypto_stream.go | H A D | 04-Dec-2020 | 2.9 KiB | 107 | 86 |
| crypto_stream_manager.go | H A D | 04-Dec-2020 | 1.5 KiB | 62 | 53 |
| crypto_stream_manager_test.go | H A D | 04-Dec-2020 | 4.6 KiB | 120 | 104 |
| crypto_stream_test.go | H A D | 04-Dec-2020 | 5.4 KiB | 181 | 161 |
| frame_sorter.go | H A D | 04-Dec-2020 | 5.8 KiB | 225 | 188 |
| frame_sorter_test.go | H A D | 04-Dec-2020 | 39.5 KiB | 1,528 | 1,290 |
| framer.go | H A D | 04-Dec-2020 | 4.2 KiB | 143 | 115 |
| framer_test.go | H A D | 04-Dec-2020 | 14.4 KiB | 358 | 321 |
| go.mod | H A D | 04-Dec-2020 | 814 | 24 | 21 |
| go.sum | H A D | 04-Dec-2020 | 27.1 KiB | 277 | 276 |
| interface.go | H A D | 04-Dec-2020 | 13.2 KiB | 292 | 99 |
| mock_ack_frame_source_test.go | H A D | 04-Dec-2020 | 1.6 KiB | 51 | 32 |
| mock_crypto_data_handler_test.go | H A D | 04-Dec-2020 | 1.6 KiB | 50 | 31 |
| mock_crypto_stream_test.go | H A D | 04-Dec-2020 | 3.9 KiB | 122 | 83 |
| mock_frame_source_test.go | H A D | 04-Dec-2020 | 2.8 KiB | 81 | 54 |
| mock_multiplexer_test.go | H A D | 04-Dec-2020 | 2.1 KiB | 66 | 43 |
| mock_packer_test.go | H A D | 04-Dec-2020 | 4.8 KiB | 137 | 94 |
| mock_packet_handler_manager_test.go | H A D | 04-Dec-2020 | 6.7 KiB | 176 | 117 |
| mock_packet_handler_test.go | H A D | 04-Dec-2020 | 2.7 KiB | 86 | 55 |
| mock_packetconn_test.go | H A D | 04-Dec-2020 | 4.3 KiB | 138 | 95 |
| mock_quic_session_test.go | H A D | 04-Dec-2020 | 10.2 KiB | 304 | 213 |
| mock_receive_stream_internal_test.go | H A D | 04-Dec-2020 | 5.1 KiB | 147 | 100 |
| mock_sealing_manager_test.go | H A D | 04-Dec-2020 | 3.3 KiB | 96 | 65 |
| mock_send_conn_test.go | H A D | 04-Dec-2020 | 2.6 KiB | 92 | 61 |
| mock_send_stream_internal_test.go | H A D | 04-Dec-2020 | 6.4 KiB | 188 | 129 |
| mock_session_runner_test.go | H A D | 04-Dec-2020 | 4.5 KiB | 124 | 81 |
| mock_stream_getter_test.go | H A D | 04-Dec-2020 | 2.2 KiB | 66 | 43 |
| mock_stream_internal_test.go | H A D | 04-Dec-2020 | 9.7 KiB | 285 | 198 |
| mock_stream_manager_test.go | H A D | 04-Dec-2020 | 7.7 KiB | 212 | 149 |
| mock_stream_sender_test.go | H A D | 04-Dec-2020 | 2.5 KiB | 73 | 46 |
| mock_token_store_test.go | H A D | 04-Dec-2020 | 1.7 KiB | 61 | 38 |
| mock_unknown_packet_handler_test.go | H A D | 04-Dec-2020 | 2 KiB | 59 | 36 |
| mock_unpacker_test.go | H A D | 04-Dec-2020 | 1.5 KiB | 52 | 33 |
| mockgen.go | H A D | 04-Dec-2020 | 2.8 KiB | 25 | 1 |
| mockgen_private.sh | H A D | 04-Dec-2020 | 500 | 17 | 9 |
| multiplexer.go | H A D | 04-Dec-2020 | 2.8 KiB | 108 | 89 |
| multiplexer_test.go | H A D | 04-Dec-2020 | 3.1 KiB | 71 | 61 |
| packet_handler_map.go | H A D | 04-Dec-2020 | 10.9 KiB | 396 | 335 |
| packet_handler_map_test.go | H A D | 04-Dec-2020 | 14.8 KiB | 414 | 360 |
| packet_packer.go | H A D | 04-Dec-2020 | 25.2 KiB | 838 | 741 |
| packet_packer_test.go | H A D | 04-Dec-2020 | 76.3 KiB | 1,449 | 1,339 |
| packet_unpacker.go | H A D | 04-Dec-2020 | 6.3 KiB | 202 | 164 |
| packet_unpacker_test.go | H A D | 04-Dec-2020 | 11.8 KiB | 294 | 273 |
| quic_suite_test.go | H A D | 04-Dec-2020 | 524 | 35 | 25 |
| receive_stream.go | H A D | 04-Dec-2020 | 8.2 KiB | 326 | 270 |
| receive_stream_test.go | H A D | 04-Dec-2020 | 22 KiB | 659 | 604 |
| retransmission_queue.go | H A D | 04-Dec-2020 | 3.3 KiB | 132 | 113 |
| retransmission_queue_test.go | H A D | 04-Dec-2020 | 6.5 KiB | 188 | 166 |
| send_conn.go | H A D | 04-Dec-2020 | 598 | 35 | 25 |
| send_conn_test.go | H A D | 04-Dec-2020 | 957 | 46 | 37 |
| send_queue.go | H A D | 04-Dec-2020 | 1.1 KiB | 53 | 45 |
| send_queue_test.go | H A D | 04-Dec-2020 | 2.6 KiB | 124 | 99 |
| send_stream.go | H A D | 04-Dec-2020 | 12.8 KiB | 480 | 406 |
| send_stream_test.go | H A D | 04-Dec-2020 | 38.6 KiB | 1,135 | 1,021 |
| server.go | H A D | 04-Dec-2020 | 20.5 KiB | 685 | 579 |
| server_test.go | H A D | 04-Dec-2020 | 45 KiB | 1,256 | 1,138 |
| session.go | H A D | 04-Dec-2020 | 55.1 KiB | 1,780 | 1,521 |
| session_test.go | H A D | 04-Dec-2020 | 101.7 KiB | 2,705 | 2,459 |
| stream.go | H A D | 04-Dec-2020 | 4.4 KiB | 149 | 108 |
| stream_deadline_error.go | H A D | 04-Dec-2020 | 280 | 12 | 7 |
| stream_deadline_error_go115.go | H A D | 04-Dec-2020 | 120 | 10 | 5 |
| stream_deadline_error_test.go | H A D | 04-Dec-2020 | 456 | 22 | 16 |
| stream_test.go | H A D | 04-Dec-2020 | 2.9 KiB | 97 | 78 |
| streams_map.go | H A D | 04-Dec-2020 | 7.8 KiB | 242 | 209 |
| streams_map_generic_helper.go | H A D | 04-Dec-2020 | 467 | 18 | 10 |
| streams_map_incoming_bidi.go | H A D | 04-Dec-2020 | 5.3 KiB | 189 | 150 |
| streams_map_incoming_generic.go | H A D | 04-Dec-2020 | 5.4 KiB | 187 | 150 |
| streams_map_incoming_generic_test.go | H A D | 04-Dec-2020 | 9.6 KiB | 303 | 260 |
| streams_map_incoming_uni.go | H A D | 04-Dec-2020 | 5.4 KiB | 189 | 150 |
| streams_map_outgoing_bidi.go | H A D | 04-Dec-2020 | 5 KiB | 216 | 175 |
| streams_map_outgoing_generic.go | H A D | 04-Dec-2020 | 5.1 KiB | 214 | 175 |
| streams_map_outgoing_generic_test.go | H A D | 04-Dec-2020 | 15.6 KiB | 530 | 471 |
| streams_map_outgoing_uni.go | H A D | 04-Dec-2020 | 5 KiB | 216 | 175 |
| streams_map_test.go | H A D | 04-Dec-2020 | 15.7 KiB | 450 | 390 |
| token_store.go | H A D | 04-Dec-2020 | 2.5 KiB | 118 | 95 |
| token_store_test.go | H A D | 04-Dec-2020 | 3.2 KiB | 109 | 93 |
| window_update_queue.go | H A D | 04-Dec-2020 | 1.8 KiB | 72 | 60 |
| window_update_queue_test.go | H A D | 04-Dec-2020 | 3.8 KiB | 113 | 98 |
| zero_rtt_queue.go | H A D | 04-Dec-2020 | 1.6 KiB | 78 | 66 |
| zero_rtt_queue_test.go | H A D | 04-Dec-2020 | 3.6 KiB | 116 | 92 |
README.md
1# A QUIC implementation in pure Go
2
3<img src="docs/quic.png" width=303 height=124>
4
5[![Godoc Reference](https://img.shields.io/badge/godoc-reference-blue.svg?style=flat-square)](https://godoc.org/github.com/lucas-clemente/quic-go)
6[![Travis Build Status](https://img.shields.io/travis/lucas-clemente/quic-go/master.svg?style=flat-square&label=Travis+build)](https://travis-ci.org/lucas-clemente/quic-go)
7[![CircleCI Build Status](https://img.shields.io/circleci/project/github/lucas-clemente/quic-go.svg?style=flat-square&label=CircleCI+build)](https://circleci.com/gh/lucas-clemente/quic-go)
8[![Windows Build Status](https://img.shields.io/appveyor/ci/lucas-clemente/quic-go/master.svg?style=flat-square&label=windows+build)](https://ci.appveyor.com/project/lucas-clemente/quic-go/branch/master)
9[![Code Coverage](https://img.shields.io/codecov/c/github/lucas-clemente/quic-go/master.svg?style=flat-square)](https://codecov.io/gh/lucas-clemente/quic-go/)
10
11quic-go is an implementation of the [QUIC](https://en.wikipedia.org/wiki/QUIC) protocol in Go. It implements the [IETF QUIC draft-29](https://tools.ietf.org/html/draft-ietf-quic-transport-29) and [draft-32](https://tools.ietf.org/html/draft-ietf-quic-transport-32).
12
13## Version compatibility
14
15Since quic-go is under active development, there's no guarantee that two builds of different commits are interoperable. The QUIC version used in the *master* branch is just a placeholder, and should not be considered stable.
16
17If you want to use quic-go as a library in other projects, please consider using a [tagged release](https://github.com/lucas-clemente/quic-go/releases). These releases expose [experimental QUIC versions](https://github.com/quicwg/base-drafts/wiki/QUIC-Versions), which are guaranteed to be stable.
18
19## Guides
20
21*We currently support Go 1.14+, with [Go modules](https://github.com/golang/go/wiki/Modules) support enabled.*
22
23Running tests:
24
25 go test ./...
26
27### QUIC without HTTP/3
28
29Take a look at [this echo example](example/echo/echo.go).
30
31## Usage
32
33### As a server
34
35See the [example server](example/main.go). Starting a QUIC server is very similar to the standard lib http in go:
36
37```go
38http.Handle("/", http.FileServer(http.Dir(wwwDir)))
39http3.ListenAndServeQUIC("localhost:4242", "/path/to/cert/chain.pem", "/path/to/privkey.pem", nil)
40```
41
42### As a client
43
44See the [example client](example/client/main.go). Use a `http3.RoundTripper` as a `Transport` in a `http.Client`.
45
46```go
47http.Client{
48 Transport: &http3.RoundTripper{},
49}
50```
51
52## Contributing
53
54We are always happy to welcome new contributors! We have a number of self-contained issues that are suitable for first-time contributors, they are tagged with [help wanted](https://github.com/lucas-clemente/quic-go/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22). If you have any questions, please feel free to reach out by opening an issue or leaving a comment.
55