• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

.circleci/H03-Apr-2021-

.githooks/H03-Apr-2021-

.github/workflows/H03-Apr-2021-

benchmark/H03-Apr-2021-

docs/H03-May-2022-

example/H03-Apr-2021-

fuzzing/H03-Apr-2021-

http3/H03-Apr-2021-

integrationtests/H03-Apr-2021-

internal/H03-Apr-2021-

interop/H03-Apr-2021-

logging/H03-Apr-2021-

qlog/H03-Apr-2021-

quicvarint/H03-Apr-2021-

.editorconfigH A D03-Apr-202152

.gitignoreH A D03-Apr-2021210

.golangci.ymlH A D03-Apr-2021903

.travis.ymlH A D03-Apr-2021829

Changelog.mdH A D03-Apr-20213.7 KiB

LICENSEH A D03-Apr-20211.1 KiB

README.mdH A D03-Apr-20212.8 KiB

buffer_pool.goH A D03-Apr-20211.8 KiB

buffer_pool_test.goH A D03-Apr-20211.2 KiB

client.goH A D03-Apr-20219 KiB

client_test.goH A D03-Apr-202118 KiB

closed_session.goH A D03-Apr-20212.9 KiB

closed_session_test.goH A D03-Apr-20211.4 KiB

codecov.ymlH A D03-Apr-2021567

config.goH A D03-Apr-20214 KiB

config_test.goH A D03-Apr-20215.8 KiB

conn.goH A D03-Apr-20211.8 KiB

conn_generic.goH A D03-Apr-2021285

conn_helper_darwin.goH A D03-Apr-2021251

conn_helper_freebsd.goH A D03-Apr-2021224

conn_helper_linux.goH A D03-Apr-2021272

conn_id_generator.goH A D03-Apr-20214.5 KiB

conn_id_generator_test.goH A D03-Apr-20218 KiB

conn_id_manager.goH A D03-Apr-20216.5 KiB

conn_id_manager_test.goH A D03-Apr-202113.9 KiB

conn_oob.goH A D03-Apr-20216.8 KiB

conn_oob_test.goH A D03-Apr-20215.8 KiB

conn_test.goH A D03-Apr-2021888

conn_windows.goH A D03-Apr-2021799

crypto_stream.goH A D03-Apr-20212.9 KiB

crypto_stream_manager.goH A D03-Apr-20211.5 KiB

crypto_stream_manager_test.goH A D03-Apr-20214.6 KiB

crypto_stream_test.goH A D03-Apr-20215.4 KiB

datagram_queue.goH A D03-Apr-20211.8 KiB

datagram_queue_test.goH A D03-Apr-20212.5 KiB

frame_sorter.goH A D03-Apr-20215.8 KiB

frame_sorter_test.goH A D03-Apr-202139.5 KiB

framer.goH A D03-Apr-20214.9 KiB

framer_test.goH A D03-Apr-202115.5 KiB

go.modH A D03-Apr-2021646

go.sumH A D03-Apr-202124.6 KiB

interface.goH A D03-Apr-202114.6 KiB

mock_ack_frame_source_test.goH A D03-Apr-20211.6 KiB

mock_crypto_data_handler_test.goH A D03-Apr-20211.6 KiB

mock_crypto_stream_test.goH A D03-Apr-20213.9 KiB

mock_frame_source_test.goH A D03-Apr-20212.8 KiB

mock_mtu_discoverer_test.goH A D03-Apr-20212.6 KiB

mock_multiplexer_test.goH A D03-Apr-20212.1 KiB

mock_packer_test.goH A D03-Apr-20216 KiB

mock_packet_handler_manager_test.goH A D03-Apr-20216.6 KiB

mock_packet_handler_test.goH A D03-Apr-20212.7 KiB

mock_packetconn_test.goH A D03-Apr-20214.3 KiB

mock_quic_session_test.goH A D03-Apr-202111.7 KiB

mock_receive_stream_internal_test.goH A D03-Apr-20215.1 KiB

mock_sealing_manager_test.goH A D03-Apr-20213.3 KiB

mock_send_conn_test.goH A D03-Apr-20212.5 KiB

mock_send_stream_internal_test.goH A D03-Apr-20216.3 KiB

mock_sender_test.goH A D03-Apr-20212.7 KiB

mock_session_runner_test.goH A D03-Apr-20214.5 KiB

mock_stream_getter_test.goH A D03-Apr-20212.2 KiB

mock_stream_internal_test.goH A D03-Apr-20219.5 KiB

mock_stream_manager_test.goH A D03-Apr-20218.4 KiB

mock_stream_sender_test.goH A D03-Apr-20212.5 KiB

mock_token_store_test.goH A D03-Apr-20211.7 KiB

mock_unknown_packet_handler_test.goH A D03-Apr-20211.9 KiB

mock_unpacker_test.goH A D03-Apr-20211.5 KiB

mockgen.goH A D03-Apr-20213.1 KiB

mockgen_private.shH A D03-Apr-20211.4 KiB

mtu_discoverer.goH A D03-Apr-20212.2 KiB

mtu_discoverer_test.goH A D03-Apr-20213.4 KiB

multiplexer.goH A D03-Apr-20212.8 KiB

multiplexer_test.goH A D03-Apr-20213.1 KiB

packet_handler_map.goH A D03-Apr-202113.5 KiB

packet_handler_map_test.goH A D03-Apr-202118.4 KiB

packet_packer.goH A D03-Apr-202127.1 KiB

packet_packer_test.goH A D03-Apr-202180.4 KiB

packet_unpacker.goH A D03-Apr-20216.3 KiB

packet_unpacker_test.goH A D03-Apr-202111.8 KiB

quic_suite_test.goH A D03-Apr-2021524

receive_stream.goH A D03-Apr-20218.2 KiB

receive_stream_test.goH A D03-Apr-202122 KiB

retransmission_queue.goH A D03-Apr-20213.3 KiB

retransmission_queue_test.goH A D03-Apr-20216.5 KiB

send_conn.goH A D03-Apr-20211.3 KiB

send_conn_test.goH A D03-Apr-2021958

send_queue.goH A D03-Apr-20211.8 KiB

send_queue_test.goH A D03-Apr-20212.9 KiB

send_stream.goH A D03-Apr-202112.9 KiB

send_stream_test.goH A D03-Apr-202139.5 KiB

server.goH A D03-Apr-202120.2 KiB

server_test.goH A D03-Apr-202143.4 KiB

session.goH A D03-Apr-202160.2 KiB

session_test.goH A D03-Apr-2021113.1 KiB

stream.goH A D03-Apr-20214.7 KiB

stream_test.goH A D03-Apr-20213.2 KiB

streams_map.goH A D03-Apr-20219.4 KiB

streams_map_generic_helper.goH A D03-Apr-2021505

streams_map_incoming_bidi.goH A D03-Apr-20215.4 KiB

streams_map_incoming_generic.goH A D03-Apr-20215.4 KiB

streams_map_incoming_generic_test.goH A D03-Apr-20219.8 KiB

streams_map_incoming_uni.goH A D03-Apr-20215.5 KiB

streams_map_outgoing_bidi.goH A D03-Apr-20215.4 KiB

streams_map_outgoing_generic.goH A D03-Apr-20215.5 KiB

streams_map_outgoing_generic_test.goH A D03-Apr-202115.9 KiB

streams_map_outgoing_uni.goH A D03-Apr-20215.5 KiB

streams_map_test.goH A D03-Apr-202116.9 KiB

token_store.goH A D03-Apr-20212.5 KiB

token_store_test.goH A D03-Apr-20213.2 KiB

window_update_queue.goH A D03-Apr-20211.8 KiB

window_update_queue_test.goH A D03-Apr-20213.8 KiB

README.md

1# A QUIC implementation in pure Go
2
3<img src="docs/quic.png" width=303 height=124>
4
5[![PkgGoDev](https://pkg.go.dev/badge/github.com/lucas-clemente/quic-go)](https://pkg.go.dev/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), [draft-32](https://tools.ietf.org/html/draft-ietf-quic-transport-32) and [draft-34](https://tools.ietf.org/html/draft-ietf-quic-transport-34).
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
17When using quic-go as a library, please always use a [tagged release](https://github.com/lucas-clemente/quic-go/releases). Only these releases use the official draft version numbers.
18
19## Guides
20
21*We currently support Go 1.15+, 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