Darien Raymond 84f8bca01c vendor quic 44 7 vuotta sitten
..
benchmark 84f8bca01c vendor quic 44 7 vuotta sitten
docs 84f8bca01c vendor quic 44 7 vuotta sitten
example 84f8bca01c vendor quic 44 7 vuotta sitten
h2quic 84f8bca01c vendor quic 44 7 vuotta sitten
integrationtests 84f8bca01c vendor quic 44 7 vuotta sitten
internal 84f8bca01c vendor quic 44 7 vuotta sitten
qerr 84f8bca01c vendor quic 44 7 vuotta sitten
vendor 84f8bca01c vendor quic 44 7 vuotta sitten
Changelog.md 84f8bca01c vendor quic 44 7 vuotta sitten
LICENSE 84f8bca01c vendor quic 44 7 vuotta sitten
README.md 84f8bca01c vendor quic 44 7 vuotta sitten
appveyor.yml 84f8bca01c vendor quic 44 7 vuotta sitten
buffer_pool.go 84f8bca01c vendor quic 44 7 vuotta sitten
buffer_pool_test.go 84f8bca01c vendor quic 44 7 vuotta sitten
client.go 84f8bca01c vendor quic 44 7 vuotta sitten
client_test.go 84f8bca01c vendor quic 44 7 vuotta sitten
codecov.yml 84f8bca01c vendor quic 44 7 vuotta sitten
conn.go 84f8bca01c vendor quic 44 7 vuotta sitten
conn_test.go 84f8bca01c vendor quic 44 7 vuotta sitten
crypto_stream.go 84f8bca01c vendor quic 44 7 vuotta sitten
crypto_stream_test.go 84f8bca01c vendor quic 44 7 vuotta sitten
frame_sorter.go 84f8bca01c vendor quic 44 7 vuotta sitten
frame_sorter_test.go 84f8bca01c vendor quic 44 7 vuotta sitten
interface.go 84f8bca01c vendor quic 44 7 vuotta sitten
mint_utils.go 84f8bca01c vendor quic 44 7 vuotta sitten
mint_utils_test.go 84f8bca01c vendor quic 44 7 vuotta sitten
mock_crypto_stream_test.go 84f8bca01c vendor quic 44 7 vuotta sitten
mock_gquic_aead_test.go 84f8bca01c vendor quic 44 7 vuotta sitten
mock_multiplexer_test.go 84f8bca01c vendor quic 44 7 vuotta sitten
mock_packet_handler_manager_test.go 84f8bca01c vendor quic 44 7 vuotta sitten
mock_packet_handler_test.go 84f8bca01c vendor quic 44 7 vuotta sitten
mock_quic_aead_test.go 84f8bca01c vendor quic 44 7 vuotta sitten
mock_quic_session_test.go 84f8bca01c vendor quic 44 7 vuotta sitten
mock_receive_stream_internal_test.go 84f8bca01c vendor quic 44 7 vuotta sitten
mock_send_stream_internal_test.go 84f8bca01c vendor quic 44 7 vuotta sitten
mock_session_runner_test.go 84f8bca01c vendor quic 44 7 vuotta sitten
mock_stream_frame_source_test.go 84f8bca01c vendor quic 44 7 vuotta sitten
mock_stream_getter_test.go 84f8bca01c vendor quic 44 7 vuotta sitten
mock_stream_internal_test.go 84f8bca01c vendor quic 44 7 vuotta sitten
mock_stream_manager_test.go 84f8bca01c vendor quic 44 7 vuotta sitten
mock_stream_sender_test.go 84f8bca01c vendor quic 44 7 vuotta sitten
mock_unknown_packet_handler_test.go 84f8bca01c vendor quic 44 7 vuotta sitten
mock_unpacker_test.go 84f8bca01c vendor quic 44 7 vuotta sitten
mockgen.go 84f8bca01c vendor quic 44 7 vuotta sitten
mockgen_private.sh 84f8bca01c vendor quic 44 7 vuotta sitten
multiplexer.go 84f8bca01c vendor quic 44 7 vuotta sitten
multiplexer_test.go 84f8bca01c vendor quic 44 7 vuotta sitten
packet_handler_map.go 84f8bca01c vendor quic 44 7 vuotta sitten
packet_handler_map_test.go 84f8bca01c vendor quic 44 7 vuotta sitten
packet_number_generator.go 84f8bca01c vendor quic 44 7 vuotta sitten
packet_number_generator_test.go 84f8bca01c vendor quic 44 7 vuotta sitten
packet_packer.go 84f8bca01c vendor quic 44 7 vuotta sitten
packet_packer_test.go 84f8bca01c vendor quic 44 7 vuotta sitten
packet_unpacker.go 84f8bca01c vendor quic 44 7 vuotta sitten
packet_unpacker_test.go 84f8bca01c vendor quic 44 7 vuotta sitten
quic_suite_test.go 84f8bca01c vendor quic 44 7 vuotta sitten
receive_stream.go 84f8bca01c vendor quic 44 7 vuotta sitten
receive_stream_test.go 84f8bca01c vendor quic 44 7 vuotta sitten
send_stream.go 84f8bca01c vendor quic 44 7 vuotta sitten
send_stream_test.go 84f8bca01c vendor quic 44 7 vuotta sitten
server.go 84f8bca01c vendor quic 44 7 vuotta sitten
server_session.go 84f8bca01c vendor quic 44 7 vuotta sitten
server_session_test.go 84f8bca01c vendor quic 44 7 vuotta sitten
server_test.go 84f8bca01c vendor quic 44 7 vuotta sitten
server_tls.go 84f8bca01c vendor quic 44 7 vuotta sitten
server_tls_test.go 84f8bca01c vendor quic 44 7 vuotta sitten
session.go 84f8bca01c vendor quic 44 7 vuotta sitten
session_test.go 84f8bca01c vendor quic 44 7 vuotta sitten
stream.go 84f8bca01c vendor quic 44 7 vuotta sitten
stream_framer.go 84f8bca01c vendor quic 44 7 vuotta sitten
stream_framer_test.go 84f8bca01c vendor quic 44 7 vuotta sitten
stream_test.go 84f8bca01c vendor quic 44 7 vuotta sitten
streams_map.go 84f8bca01c vendor quic 44 7 vuotta sitten
streams_map_generic_helper.go 84f8bca01c vendor quic 44 7 vuotta sitten
streams_map_incoming_bidi.go 84f8bca01c vendor quic 44 7 vuotta sitten
streams_map_incoming_generic.go 84f8bca01c vendor quic 44 7 vuotta sitten
streams_map_incoming_generic_test.go 84f8bca01c vendor quic 44 7 vuotta sitten
streams_map_incoming_uni.go 84f8bca01c vendor quic 44 7 vuotta sitten
streams_map_legacy.go 84f8bca01c vendor quic 44 7 vuotta sitten
streams_map_legacy_test.go 84f8bca01c vendor quic 44 7 vuotta sitten
streams_map_outgoing_bidi.go 84f8bca01c vendor quic 44 7 vuotta sitten
streams_map_outgoing_generic.go 84f8bca01c vendor quic 44 7 vuotta sitten
streams_map_outgoing_generic_test.go 84f8bca01c vendor quic 44 7 vuotta sitten
streams_map_outgoing_uni.go 84f8bca01c vendor quic 44 7 vuotta sitten
streams_map_test.go 84f8bca01c vendor quic 44 7 vuotta sitten
window_update_queue.go 84f8bca01c vendor quic 44 7 vuotta sitten
window_update_queue_test.go 84f8bca01c vendor quic 44 7 vuotta sitten

README.md

A QUIC implementation in pure Go

Godoc Reference Travis Build Status CircleCI 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.9+.

Installing and updating dependencies:

go get -t -u ./...

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

QUIC without HTTP/2

Take a look at this echo example.

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 h2quic.RoundTripper as a Transport in a http.Client.

http.Client{
  Transport: &h2quic.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.