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

..03-May-2022-

.circleci/H04-Dec-2020-5754

.github/workflows/H04-Dec-2020-186156

.travis/H04-Dec-2020-146

benchmark/H04-Dec-2020-12195

docs/H03-May-2022-

example/H04-Dec-2020-483409

fuzzing/H04-Dec-2020-1,7651,563

http3/H04-Dec-2020-4,0683,360

integrationtests/H04-Dec-2020-6,0745,200

internal/H04-Dec-2020-26,20620,713

interop/H04-Dec-2020-857707

logging/H04-Dec-2020-1,371978

metrics/H04-Dec-2020-303262

qlog/H04-Dec-2020-3,0452,665

quictrace/H04-Dec-2020-2,1981,819

.editorconfigH A D04-Dec-202052 64

.gitignoreH A D04-Dec-2020210 1815

.golangci.ymlH A D04-Dec-2020950 5147

.travis.ymlH A D04-Dec-2020829 3226

Changelog.mdH A D04-Dec-20203.6 KiB9166

LICENSEH A D04-Dec-20201.1 KiB2217

README.mdH A D04-Dec-20202.8 KiB5533

buffer_pool.goH A D04-Dec-20201.8 KiB8153

buffer_pool_test.goH A D04-Dec-20201.2 KiB5645

client.goH A D04-Dec-20209 KiB330261

client_test.goH A D04-Dec-202018.9 KiB623569

closed_session.goH A D04-Dec-20202.9 KiB11384

closed_session_test.goH A D04-Dec-20201.4 KiB5745

codecov.ymlH A D04-Dec-2020584 2322

config.goH A D04-Dec-20203.4 KiB10591

config_test.goH A D04-Dec-20205 KiB156134

conn.goH A D04-Dec-20201.6 KiB6147

conn_ecn.goH A D04-Dec-20203.1 KiB11498

conn_ecn_test.goH A D04-Dec-20203.6 KiB129106

conn_generic.goH A D04-Dec-2020229 148

conn_helper_darwin.goH A D04-Dec-2020240 169

conn_helper_linux.goH A D04-Dec-2020206 126

conn_id_generator.goH A D04-Dec-20204.5 KiB138116

conn_id_generator_test.goH A D04-Dec-20206.7 KiB171149

conn_id_manager.goH A D04-Dec-20206.8 KiB215172

conn_id_manager_test.goH A D04-Dec-202013.9 KiB363328

conn_test.goH A D04-Dec-2020889 3427

conn_windows.goH A D04-Dec-2020749 3831

crypto_stream.goH A D04-Dec-20202.9 KiB10786

crypto_stream_manager.goH A D04-Dec-20201.5 KiB6253

crypto_stream_manager_test.goH A D04-Dec-20204.6 KiB120104

crypto_stream_test.goH A D04-Dec-20205.4 KiB181161

frame_sorter.goH A D04-Dec-20205.8 KiB225188

frame_sorter_test.goH A D04-Dec-202039.5 KiB1,5281,290

framer.goH A D04-Dec-20204.2 KiB143115

framer_test.goH A D04-Dec-202014.4 KiB358321

go.modH A D04-Dec-2020814 2421

go.sumH A D04-Dec-202027.1 KiB277276

interface.goH A D04-Dec-202013.2 KiB29299

mock_ack_frame_source_test.goH A D04-Dec-20201.6 KiB5132

mock_crypto_data_handler_test.goH A D04-Dec-20201.6 KiB5031

mock_crypto_stream_test.goH A D04-Dec-20203.9 KiB12283

mock_frame_source_test.goH A D04-Dec-20202.8 KiB8154

mock_multiplexer_test.goH A D04-Dec-20202.1 KiB6643

mock_packer_test.goH A D04-Dec-20204.8 KiB13794

mock_packet_handler_manager_test.goH A D04-Dec-20206.7 KiB176117

mock_packet_handler_test.goH A D04-Dec-20202.7 KiB8655

mock_packetconn_test.goH A D04-Dec-20204.3 KiB13895

mock_quic_session_test.goH A D04-Dec-202010.2 KiB304213

mock_receive_stream_internal_test.goH A D04-Dec-20205.1 KiB147100

mock_sealing_manager_test.goH A D04-Dec-20203.3 KiB9665

mock_send_conn_test.goH A D04-Dec-20202.6 KiB9261

mock_send_stream_internal_test.goH A D04-Dec-20206.4 KiB188129

mock_session_runner_test.goH A D04-Dec-20204.5 KiB12481

mock_stream_getter_test.goH A D04-Dec-20202.2 KiB6643

mock_stream_internal_test.goH A D04-Dec-20209.7 KiB285198

mock_stream_manager_test.goH A D04-Dec-20207.7 KiB212149

mock_stream_sender_test.goH A D04-Dec-20202.5 KiB7346

mock_token_store_test.goH A D04-Dec-20201.7 KiB6138

mock_unknown_packet_handler_test.goH A D04-Dec-20202 KiB5936

mock_unpacker_test.goH A D04-Dec-20201.5 KiB5233

mockgen.goH A D04-Dec-20202.8 KiB251

mockgen_private.shH A D04-Dec-2020500 179

multiplexer.goH A D04-Dec-20202.8 KiB10889

multiplexer_test.goH A D04-Dec-20203.1 KiB7161

packet_handler_map.goH A D04-Dec-202010.9 KiB396335

packet_handler_map_test.goH A D04-Dec-202014.8 KiB414360

packet_packer.goH A D04-Dec-202025.2 KiB838741

packet_packer_test.goH A D04-Dec-202076.3 KiB1,4491,339

packet_unpacker.goH A D04-Dec-20206.3 KiB202164

packet_unpacker_test.goH A D04-Dec-202011.8 KiB294273

quic_suite_test.goH A D04-Dec-2020524 3525

receive_stream.goH A D04-Dec-20208.2 KiB326270

receive_stream_test.goH A D04-Dec-202022 KiB659604

retransmission_queue.goH A D04-Dec-20203.3 KiB132113

retransmission_queue_test.goH A D04-Dec-20206.5 KiB188166

send_conn.goH A D04-Dec-2020598 3525

send_conn_test.goH A D04-Dec-2020957 4637

send_queue.goH A D04-Dec-20201.1 KiB5345

send_queue_test.goH A D04-Dec-20202.6 KiB12499

send_stream.goH A D04-Dec-202012.8 KiB480406

send_stream_test.goH A D04-Dec-202038.6 KiB1,1351,021

server.goH A D04-Dec-202020.5 KiB685579

server_test.goH A D04-Dec-202045 KiB1,2561,138

session.goH A D04-Dec-202055.1 KiB1,7801,521

session_test.goH A D04-Dec-2020101.7 KiB2,7052,459

stream.goH A D04-Dec-20204.4 KiB149108

stream_deadline_error.goH A D04-Dec-2020280 127

stream_deadline_error_go115.goH A D04-Dec-2020120 105

stream_deadline_error_test.goH A D04-Dec-2020456 2216

stream_test.goH A D04-Dec-20202.9 KiB9778

streams_map.goH A D04-Dec-20207.8 KiB242209

streams_map_generic_helper.goH A D04-Dec-2020467 1810

streams_map_incoming_bidi.goH A D04-Dec-20205.3 KiB189150

streams_map_incoming_generic.goH A D04-Dec-20205.4 KiB187150

streams_map_incoming_generic_test.goH A D04-Dec-20209.6 KiB303260

streams_map_incoming_uni.goH A D04-Dec-20205.4 KiB189150

streams_map_outgoing_bidi.goH A D04-Dec-20205 KiB216175

streams_map_outgoing_generic.goH A D04-Dec-20205.1 KiB214175

streams_map_outgoing_generic_test.goH A D04-Dec-202015.6 KiB530471

streams_map_outgoing_uni.goH A D04-Dec-20205 KiB216175

streams_map_test.goH A D04-Dec-202015.7 KiB450390

token_store.goH A D04-Dec-20202.5 KiB11895

token_store_test.goH A D04-Dec-20203.2 KiB10993

window_update_queue.goH A D04-Dec-20201.8 KiB7260

window_update_queue_test.goH A D04-Dec-20203.8 KiB11398

zero_rtt_queue.goH A D04-Dec-20201.6 KiB7866

zero_rtt_queue_test.goH A D04-Dec-20203.6 KiB11692

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