route/vendor/github.com/lucas-clemente/quic-go
Cadey Ratio 90536c6ec0 cmd/routed: add quic support 2017-12-11 18:51:45 -08:00
..
ackhandler cmd/routed: add quic support 2017-12-11 18:51:45 -08:00
congestion cmd/routed: add quic support 2017-12-11 18:51:45 -08:00
crypto cmd/routed: add quic support 2017-12-11 18:51:45 -08:00
flowcontrol cmd/routed: add quic support 2017-12-11 18:51:45 -08:00
frames cmd/routed: add quic support 2017-12-11 18:51:45 -08:00
h2quic cmd/routed: add quic support 2017-12-11 18:51:45 -08:00
handshake cmd/routed: add quic support 2017-12-11 18:51:45 -08:00
protocol cmd/routed: add quic support 2017-12-11 18:51:45 -08:00
qerr cmd/routed: add quic support 2017-12-11 18:51:45 -08:00
utils cmd/routed: add quic support 2017-12-11 18:51:45 -08:00
.editorconfig cmd/routed: add quic support 2017-12-11 18:51:45 -08:00
.gitignore cmd/routed: add quic support 2017-12-11 18:51:45 -08:00
.travis.yml cmd/routed: add quic support 2017-12-11 18:51:45 -08:00
LICENSE cmd/routed: add quic support 2017-12-11 18:51:45 -08:00
README.md cmd/routed: add quic support 2017-12-11 18:51:45 -08:00
appveyor.yml cmd/routed: add quic support 2017-12-11 18:51:45 -08:00
benchmark_test.go cmd/routed: add quic support 2017-12-11 18:51:45 -08:00
buffer_pool.go cmd/routed: add quic support 2017-12-11 18:51:45 -08:00
buffer_pool_test.go cmd/routed: add quic support 2017-12-11 18:51:45 -08:00
client.go cmd/routed: add quic support 2017-12-11 18:51:45 -08:00
client_test.go cmd/routed: add quic support 2017-12-11 18:51:45 -08:00
codecov.yml cmd/routed: add quic support 2017-12-11 18:51:45 -08:00
conn.go cmd/routed: add quic support 2017-12-11 18:51:45 -08:00
conn_test.go cmd/routed: add quic support 2017-12-11 18:51:45 -08:00
interface.go cmd/routed: add quic support 2017-12-11 18:51:45 -08:00
packet_number_generator.go cmd/routed: add quic support 2017-12-11 18:51:45 -08:00
packet_number_generator_test.go cmd/routed: add quic support 2017-12-11 18:51:45 -08:00
packet_packer.go cmd/routed: add quic support 2017-12-11 18:51:45 -08:00
packet_packer_test.go cmd/routed: add quic support 2017-12-11 18:51:45 -08:00
packet_unpacker.go cmd/routed: add quic support 2017-12-11 18:51:45 -08:00
packet_unpacker_test.go cmd/routed: add quic support 2017-12-11 18:51:45 -08:00
public_header.go cmd/routed: add quic support 2017-12-11 18:51:45 -08:00
public_header_test.go cmd/routed: add quic support 2017-12-11 18:51:45 -08:00
public_reset.go cmd/routed: add quic support 2017-12-11 18:51:45 -08:00
public_reset_test.go cmd/routed: add quic support 2017-12-11 18:51:45 -08:00
quic_suite_test.go cmd/routed: add quic support 2017-12-11 18:51:45 -08:00
server.go cmd/routed: add quic support 2017-12-11 18:51:45 -08:00
server_test.go cmd/routed: add quic support 2017-12-11 18:51:45 -08:00
session.go cmd/routed: add quic support 2017-12-11 18:51:45 -08:00
session_test.go cmd/routed: add quic support 2017-12-11 18:51:45 -08:00
stream.go cmd/routed: add quic support 2017-12-11 18:51:45 -08:00
stream_frame_sorter.go cmd/routed: add quic support 2017-12-11 18:51:45 -08:00
stream_frame_sorter_test.go cmd/routed: add quic support 2017-12-11 18:51:45 -08:00
stream_framer.go cmd/routed: add quic support 2017-12-11 18:51:45 -08:00
stream_framer_test.go cmd/routed: add quic support 2017-12-11 18:51:45 -08:00
stream_test.go cmd/routed: add quic support 2017-12-11 18:51:45 -08:00
streams_map.go cmd/routed: add quic support 2017-12-11 18:51:45 -08:00
streams_map_test.go cmd/routed: add quic support 2017-12-11 18:51:45 -08:00
unpacked_packet.go cmd/routed: add quic support 2017-12-11 18:51:45 -08:00
unpacked_packet_test.go cmd/routed: add quic support 2017-12-11 18:51:45 -08:00

README.md

A QUIC implementation in pure Go

Godoc Reference Linux Build Status Windows Build Status Code Coverage

quic-go is an implementation of the QUIC protocol in Go.

Roadmap

quic-go is compatible with the current version(s) of Google Chrome and QUIC as deployed on Google's servers. We're actively tracking the development of the Chrome code to ensure compatibility as the protocol evolves. In that process, we're dropping support for old QUIC versions. As Google's QUIC versions are expected to converge towards the IETF QUIC draft, quic-go will eventually implement that draft.

Guides

We currently support Go 1.7+.

Installing deps:

go get -t

Running tests:

go test ./...

Running the example server

go run example/main.go -www /var/www/

Using the quic_client from chromium:

quic_client --host=127.0.0.1 --port=6121 --v=1 https://quic.clemente.io

Using Chrome:

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --user-data-dir=/tmp/chrome --no-proxy-server --enable-quic --origin-to-force-quic-on=quic.clemente.io:443 --host-resolver-rules='MAP quic.clemente.io:443 127.0.0.1:6121' https://quic.clemente.io

Using the example client

go run example/client/main.go https://clemente.io

Usage

As a server

See the example server or try out Caddy (from version 0.9, instructions here). Starting a QUIC server is very similar to the standard lib http in go:

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

As a client

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

http.Client{
  Transport: &h2quic.QuicRoundTripper{},
}

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