Rod Hynes d5d9b91e45 Update vendored github.com/Psiphon-Labs/quic-go пре 6 година
..
http3 0074bdee43 Vendor Psiphon-Labs/quic-go/http3 пре 6 година
internal 178f4b6e10 Update vendored quic-go пре 6 година
quictrace 32917dfb51 Vendor Psiphon-Labs/quic-go пре 6 година
Changelog.md 32917dfb51 Vendor Psiphon-Labs/quic-go пре 6 година
LICENSE 32917dfb51 Vendor Psiphon-Labs/quic-go пре 6 година
README.md 32917dfb51 Vendor Psiphon-Labs/quic-go пре 6 година
appveyor.yml 32917dfb51 Vendor Psiphon-Labs/quic-go пре 6 година
buffer_pool.go 32917dfb51 Vendor Psiphon-Labs/quic-go пре 6 година
client.go 32917dfb51 Vendor Psiphon-Labs/quic-go пре 6 година
closed_session.go 32917dfb51 Vendor Psiphon-Labs/quic-go пре 6 година
codecov.yml 32917dfb51 Vendor Psiphon-Labs/quic-go пре 6 година
conn.go 32917dfb51 Vendor Psiphon-Labs/quic-go пре 6 година
conn_id_generator.go 32917dfb51 Vendor Psiphon-Labs/quic-go пре 6 година
conn_id_manager.go 32917dfb51 Vendor Psiphon-Labs/quic-go пре 6 година
crypto_stream.go 32917dfb51 Vendor Psiphon-Labs/quic-go пре 6 година
crypto_stream_manager.go 32917dfb51 Vendor Psiphon-Labs/quic-go пре 6 година
frame_sorter.go 32917dfb51 Vendor Psiphon-Labs/quic-go пре 6 година
framer.go 32917dfb51 Vendor Psiphon-Labs/quic-go пре 6 година
go.mod 32917dfb51 Vendor Psiphon-Labs/quic-go пре 6 година
go.sum 32917dfb51 Vendor Psiphon-Labs/quic-go пре 6 година
interface.go 32917dfb51 Vendor Psiphon-Labs/quic-go пре 6 година
mockgen.go 32917dfb51 Vendor Psiphon-Labs/quic-go пре 6 година
mockgen_private.sh 32917dfb51 Vendor Psiphon-Labs/quic-go пре 6 година
multiplexer.go 32917dfb51 Vendor Psiphon-Labs/quic-go пре 6 година
packet_handler_map.go c8e0b25f8f Update vendored Psiphon-Labs/quic-go пре 6 година
packet_packer.go 32917dfb51 Vendor Psiphon-Labs/quic-go пре 6 година
packet_unpacker.go 32917dfb51 Vendor Psiphon-Labs/quic-go пре 6 година
receive_stream.go 304048e09a Update vendored Psiphon-Labs/quic-go пре 6 година
retransmission_queue.go 32917dfb51 Vendor Psiphon-Labs/quic-go пре 6 година
send_queue.go 32917dfb51 Vendor Psiphon-Labs/quic-go пре 6 година
send_stream.go 304048e09a Update vendored Psiphon-Labs/quic-go пре 6 година
server.go d5d9b91e45 Update vendored github.com/Psiphon-Labs/quic-go пре 6 година
session.go d5d9b91e45 Update vendored github.com/Psiphon-Labs/quic-go пре 6 година
stream.go 32917dfb51 Vendor Psiphon-Labs/quic-go пре 6 година
streams_map.go 32917dfb51 Vendor Psiphon-Labs/quic-go пре 6 година
streams_map_generic_helper.go 32917dfb51 Vendor Psiphon-Labs/quic-go пре 6 година
streams_map_incoming_bidi.go 32917dfb51 Vendor Psiphon-Labs/quic-go пре 6 година
streams_map_incoming_generic.go 32917dfb51 Vendor Psiphon-Labs/quic-go пре 6 година
streams_map_incoming_uni.go 32917dfb51 Vendor Psiphon-Labs/quic-go пре 6 година
streams_map_outgoing_bidi.go 32917dfb51 Vendor Psiphon-Labs/quic-go пре 6 година
streams_map_outgoing_generic.go 32917dfb51 Vendor Psiphon-Labs/quic-go пре 6 година
streams_map_outgoing_uni.go 32917dfb51 Vendor Psiphon-Labs/quic-go пре 6 година
token_store.go 32917dfb51 Vendor Psiphon-Labs/quic-go пре 6 година
window_update_queue.go 32917dfb51 Vendor Psiphon-Labs/quic-go пре 6 година

README.md

A QUIC implementation in pure Go

Godoc Reference Travis Build Status CircleCI Build Status Windows Build Status Code Coverage fuzzit

quic-go is an implementation of the QUIC protocol in Go. It roughly implements the IETF QUIC draft, although we don't fully support any of the draft versions at the moment.

Version compatibility

Since 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.

If you want to use quic-go as a library in other projects, please consider using a tagged release. These releases expose experimental QUIC versions, which are guaranteed to be stable.

Guides

We currently support Go 1.13+, with Go modules support enabled.

Installing and updating dependencies:

go get -u ./...

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.