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

..03-May-2022-

.circleci/H16-Aug-2021-5653

.githooks/H16-Aug-2021-3626

.github/workflows/H16-Aug-2021-255214

benchmark/H16-Aug-2021-12195

docs/H03-May-2022-

example/H16-Aug-2021-435367

fuzzing/H16-Aug-2021-1,7681,566

http3/H16-Aug-2021-4,8034,011

integrationtests/H16-Aug-2021-7,1066,138

internal/H16-Aug-2021-26,42320,956

interop/H16-Aug-2021-854704

logging/H16-Aug-2021-1,333951

qlog/H16-Aug-2021-3,3842,984

quicvarint/H16-Aug-2021-515419

.gitignoreH A D16-Aug-2021210 1815

.golangci.ymlH A D16-Aug-2021903 5046

Changelog.mdH A D16-Aug-20214.4 KiB11077

LICENSEH A D16-Aug-20211.1 KiB2217

README.mdH A D16-Aug-20212.3 KiB5031

buffer_pool.goH A D16-Aug-20211.8 KiB8153

buffer_pool_test.goH A D16-Aug-20211.2 KiB5645

client.goH A D16-Aug-20219.2 KiB338267

client_test.goH A D16-Aug-202118.2 KiB613560

closed_session.goH A D16-Aug-20212.9 KiB11384

closed_session_test.goH A D16-Aug-20211.4 KiB5745

codecov.ymlH A D16-Aug-2021567 2221

config.goH A D16-Aug-20214.1 KiB124108

config_test.goH A D16-Aug-20215.9 KiB178153

conn.goH A D16-Aug-20211.8 KiB6651

conn_generic.goH A D16-Aug-2021285 169

conn_helper_darwin.goH A D16-Aug-2021391 2212

conn_helper_freebsd.goH A D16-Aug-2021245 2012

conn_helper_linux.goH A D16-Aug-2021385 2012

conn_id_generator.goH A D16-Aug-20214.4 KiB141119

conn_id_generator_test.goH A D16-Aug-20217.3 KiB188166

conn_id_manager.goH A D16-Aug-20216.5 KiB208165

conn_id_manager_test.goH A D16-Aug-202114 KiB365329

conn_oob.goH A D16-Aug-20218.3 KiB288232

conn_oob_test.goH A D16-Aug-20217.1 KiB243200

conn_test.goH A D16-Aug-2021888 3427

conn_windows.goH A D16-Aug-20211.2 KiB5442

conn_windows_test.goH A D16-Aug-2021784 3326

crypto_stream.goH A D16-Aug-20213 KiB11695

crypto_stream_manager.goH A D16-Aug-20211.5 KiB6253

crypto_stream_manager_test.goH A D16-Aug-20214.6 KiB120104

crypto_stream_test.goH A D16-Aug-20215.7 KiB188168

datagram_queue.goH A D16-Aug-20211.8 KiB8869

datagram_queue_test.goH A D16-Aug-20212.5 KiB9983

errors.goH A D16-Aug-20211.9 KiB5948

frame_sorter.goH A D16-Aug-20215.8 KiB225188

frame_sorter_test.goH A D16-Aug-202139.5 KiB1,5281,290

framer.goH A D16-Aug-20214.9 KiB172141

framer_test.goH A D16-Aug-202115.5 KiB386348

go.modH A D16-Aug-2021646 2017

go.sumH A D16-Aug-202127.9 KiB284283

interface.goH A D16-Aug-202114.8 KiB323105

mock_ack_frame_source_test.goH A D16-Aug-20211.6 KiB5132

mock_batch_conn_test.goH A D16-Aug-20211.4 KiB5132

mock_crypto_data_handler_test.goH A D16-Aug-20211.6 KiB5031

mock_crypto_stream_test.goH A D16-Aug-20213.9 KiB12283

mock_frame_source_test.goH A D16-Aug-20212.8 KiB8154

mock_mtu_discoverer_test.goH A D16-Aug-20212.6 KiB8154

mock_multiplexer_test.goH A D16-Aug-20212.1 KiB6643

mock_packer_test.goH A D16-Aug-20216.6 KiB180125

mock_packet_handler_manager_test.goH A D16-Aug-20216.6 KiB176117

mock_packet_handler_test.goH A D16-Aug-20212.7 KiB8655

mock_packetconn_test.goH A D16-Aug-20214.3 KiB13895

mock_quic_session_test.goH A D16-Aug-202111.7 KiB347244

mock_receive_stream_internal_test.goH A D16-Aug-20215.1 KiB147100

mock_sealing_manager_test.goH A D16-Aug-20213.3 KiB9665

mock_send_conn_test.goH A D16-Aug-20212.5 KiB9261

mock_send_stream_internal_test.goH A D16-Aug-20216.3 KiB188129

mock_sender_test.goH A D16-Aug-20212.7 KiB10166

mock_session_runner_test.goH A D16-Aug-20214.5 KiB12481

mock_stream_getter_test.goH A D16-Aug-20212.2 KiB6643

mock_stream_internal_test.goH A D16-Aug-20219.5 KiB285198

mock_stream_manager_test.goH A D16-Aug-20218.4 KiB232161

mock_stream_sender_test.goH A D16-Aug-20212.5 KiB7346

mock_token_store_test.goH A D16-Aug-20211.7 KiB6138

mock_unknown_packet_handler_test.goH A D16-Aug-20211.9 KiB5936

mock_unpacker_test.goH A D16-Aug-20211.5 KiB5233

mockgen.goH A D16-Aug-20213.2 KiB281

mockgen_private.shH A D16-Aug-20211.4 KiB5236

mtu_discoverer.goH A D16-Aug-20212.2 KiB8567

mtu_discoverer_test.goH A D16-Aug-20213.4 KiB117102

multiplexer.goH A D16-Aug-20212.8 KiB10889

multiplexer_test.goH A D16-Aug-20213.1 KiB7161

packet_handler_map.goH A D16-Aug-202113.3 KiB468404

packet_handler_map_test.goH A D16-Aug-202118.4 KiB496429

packet_packer.goH A D16-Aug-202127.5 KiB895785

packet_packer_test.goH A D16-Aug-202180.6 KiB1,5571,441

packet_unpacker.goH A D16-Aug-20216.2 KiB197160

packet_unpacker_test.goH A D16-Aug-202111.7 KiB293272

quic_suite_test.goH A D16-Aug-2021524 3525

receive_stream.goH A D16-Aug-20218.2 KiB327271

receive_stream_test.goH A D16-Aug-202121.6 KiB659604

retransmission_queue.goH A D16-Aug-20213.3 KiB132113

retransmission_queue_test.goH A D16-Aug-20216.5 KiB188166

send_conn.goH A D16-Aug-20211.3 KiB7558

send_conn_test.goH A D16-Aug-2021958 4637

send_queue.goH A D16-Aug-20211.8 KiB8367

send_queue_test.goH A D16-Aug-20212.9 KiB127102

send_stream.goH A D16-Aug-202112.9 KiB489416

send_stream_test.goH A D16-Aug-202139.1 KiB1,1601,044

server.goH A D16-Aug-202120.4 KiB672564

server_test.goH A D16-Aug-202144.7 KiB1,2391,124

session.goH A D16-Aug-202161.1 KiB1,9961,717

session_test.goH A D16-Aug-2021113.4 KiB3,0252,753

stream.goH A D16-Aug-20214.4 KiB150109

stream_test.goH A D16-Aug-20213.2 KiB10888

streams_map.goH A D16-Aug-20219.5 KiB318277

streams_map_generic_helper.goH A D16-Aug-2021505 1911

streams_map_incoming_bidi.goH A D16-Aug-20215.4 KiB193153

streams_map_incoming_generic.goH A D16-Aug-20215.4 KiB191153

streams_map_incoming_generic_test.goH A D16-Aug-20219.8 KiB308264

streams_map_incoming_uni.goH A D16-Aug-20215.5 KiB193153

streams_map_outgoing_bidi.goH A D16-Aug-20215.4 KiB227182

streams_map_outgoing_generic.goH A D16-Aug-20215.5 KiB225182

streams_map_outgoing_generic_test.goH A D16-Aug-202115.9 KiB540480

streams_map_outgoing_uni.goH A D16-Aug-20215.5 KiB227182

streams_map_test.goH A D16-Aug-202117.3 KiB501434

token_store.goH A D16-Aug-20212.5 KiB11895

token_store_test.goH A D16-Aug-20213.2 KiB10993

tools.goH A D16-Aug-2021110 95

window_update_queue.goH A D16-Aug-20211.8 KiB7260

window_update_queue_test.goH A D16-Aug-20213.8 KiB11398

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 protocol, RFC 9000](https://datatracker.ietf.org/doc/html/rfc9000) protocol in Go.
12In addition to RFC 9000, it currently implements the [IETF QUIC draft-29](https://tools.ietf.org/html/draft-ietf-quic-transport-29). Support for draft-29 will eventually be dropped, as it is phased out of the ecosystem.
13
14## Guides
15
16*We currently support Go 1.16.x and Go 1.17.x.*
17
18Running tests:
19
20    go test ./...
21
22### QUIC without HTTP/3
23
24Take a look at [this echo example](example/echo/echo.go).
25
26## Usage
27
28### As a server
29
30See the [example server](example/main.go). Starting a QUIC server is very similar to the standard lib http in go:
31
32```go
33http.Handle("/", http.FileServer(http.Dir(wwwDir)))
34http3.ListenAndServeQUIC("localhost:4242", "/path/to/cert/chain.pem", "/path/to/privkey.pem", nil)
35```
36
37### As a client
38
39See the [example client](example/client/main.go). Use a `http3.RoundTripper` as a `Transport` in a `http.Client`.
40
41```go
42http.Client{
43  Transport: &http3.RoundTripper{},
44}
45```
46
47## Contributing
48
49We 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.
50