Rod Hynes 1af7566400 Update vendored Psiphon-Labs/quic-go 4 years ago
..
http3 c54981560c Update vendored quic-go 4 years ago
internal 2c60eac02e Add enhanced blocking resistance for QUICv1 versions 4 years ago
logging b3a4e9bc4a Update vendored quic-go 4 years ago
quicvarint e5058296d5 Update vendored quic-go 4 years ago
Changelog.md e5058296d5 Update vendored quic-go 4 years ago
LICENSE 32917dfb51 Vendor Psiphon-Labs/quic-go 6 years ago
README.md c54981560c Update vendored quic-go 4 years ago
buffer_pool.go e5058296d5 Update vendored quic-go 4 years ago
client.go c54981560c Update vendored quic-go 4 years ago
closed_session.go 9b6aef8cec Updated vendored dependencies for IETF-draft-29 5 years ago
codecov.yml e5058296d5 Update vendored quic-go 4 years ago
config.go 2c60eac02e Add enhanced blocking resistance for QUICv1 versions 4 years ago
conn.go e5058296d5 Update vendored quic-go 4 years ago
conn_generic.go e5058296d5 Update vendored quic-go 4 years ago
conn_helper_darwin.go c54981560c Update vendored quic-go 4 years ago
conn_helper_freebsd.go c54981560c Update vendored quic-go 4 years ago
conn_helper_linux.go c54981560c Update vendored quic-go 4 years ago
conn_id_generator.go c54981560c Update vendored quic-go 4 years ago
conn_id_manager.go b3a4e9bc4a Update vendored quic-go 4 years ago
conn_oob.go c54981560c Update vendored quic-go 4 years ago
conn_windows.go b3a4e9bc4a Update vendored quic-go 4 years ago
crypto_stream.go b3a4e9bc4a Update vendored quic-go 4 years ago
crypto_stream_manager.go 9b6aef8cec Updated vendored dependencies for IETF-draft-29 5 years ago
datagram_queue.go e5058296d5 Update vendored quic-go 4 years ago
errors.go b3a4e9bc4a Update vendored quic-go 4 years ago
frame_sorter.go 9b6aef8cec Updated vendored dependencies for IETF-draft-29 5 years ago
framer.go e5058296d5 Update vendored quic-go 4 years ago
go.mod c54981560c Update vendored quic-go 4 years ago
go.sum c54981560c Update vendored quic-go 4 years ago
interface.go 2c60eac02e Add enhanced blocking resistance for QUICv1 versions 4 years ago
mockgen.go c54981560c Update vendored quic-go 4 years ago
mockgen_private.sh e5058296d5 Update vendored quic-go 4 years ago
mtu_discoverer.go e5058296d5 Update vendored quic-go 4 years ago
multiplexer.go 9b6aef8cec Updated vendored dependencies for IETF-draft-29 5 years ago
packet_handler_map.go b3a4e9bc4a Update vendored quic-go 4 years ago
packet_packer.go 62dd438c9b Add ServerEntry.LimitQUICVersions 4 years ago
packet_unpacker.go c54981560c Update vendored quic-go 4 years ago
receive_stream.go 1af7566400 Update vendored Psiphon-Labs/quic-go 4 years ago
retransmission_queue.go 9b6aef8cec Updated vendored dependencies for IETF-draft-29 5 years ago
send_conn.go e5058296d5 Update vendored quic-go 4 years ago
send_queue.go e5058296d5 Update vendored quic-go 4 years ago
send_stream.go b3a4e9bc4a Update vendored quic-go 4 years ago
server.go 92e768d3c3 Update/resync vendored quic-go and qtls 4 years ago
session.go 1af7566400 Update vendored Psiphon-Labs/quic-go 4 years ago
stream.go b3a4e9bc4a Update vendored quic-go 4 years ago
streams_map.go b3a4e9bc4a Update vendored quic-go 4 years ago
streams_map_generic_helper.go e5058296d5 Update vendored quic-go 4 years ago
streams_map_incoming_bidi.go b3a4e9bc4a Update vendored quic-go 4 years ago
streams_map_incoming_generic.go b3a4e9bc4a Update vendored quic-go 4 years ago
streams_map_incoming_uni.go b3a4e9bc4a Update vendored quic-go 4 years ago
streams_map_outgoing_bidi.go b3a4e9bc4a Update vendored quic-go 4 years ago
streams_map_outgoing_generic.go b3a4e9bc4a Update vendored quic-go 4 years ago
streams_map_outgoing_uni.go b3a4e9bc4a Update vendored quic-go 4 years ago
token_store.go 32917dfb51 Vendor Psiphon-Labs/quic-go 6 years ago
tools.go c54981560c Update vendored quic-go 4 years ago
window_update_queue.go 9b6aef8cec Updated vendored dependencies for IETF-draft-29 5 years ago

README.md

A QUIC implementation in pure Go

PkgGoDev Travis Build Status CircleCI Build Status Windows Build Status Code Coverage

quic-go is an implementation of the QUIC protocol, RFC 9000 protocol in Go. In addition to RFC 9000, it currently implements the IETF QUIC draft-29, draft-32 and draft-34. Support for draft versions will be eventually be dropped, as these are phased out of the ecosystem.

Guides

We currently support Go 1.15.x, Go 1.16.x and Go 1.17 Beta 1, with Go modules support enabled.

Running tests:

go test ./...

QUIC without HTTP/3

Take a look at this echo example.

Usage

As a server

See the example server. Starting a QUIC server is very similar to the standard lib http in go:

http.Handle("/", http.FileServer(http.Dir(wwwDir)))
http3.ListenAndServeQUIC("localhost:4242", "/path/to/cert/chain.pem", "/path/to/privkey.pem", nil)

As a client

See the example client. Use a http3.RoundTripper as a Transport in a http.Client.

http.Client{
  Transport: &http3.RoundTripper{},
}

Contributing

We 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. If you have any questions, please feel free to reach out by opening an issue or leaving a comment.