Lucas Clemente 22cdbf7b49 Fix flaky appveyor tests
We were relying on the number of goroutines in those tests. This commit
replaces that logic with grepping through the current callstack.

The 'doesn't return after version negotiation is established if no
ConnState is defined' test is disabled, since I can't figure out a way
to make it work without leaking sessions. I filed #506 to track that
work.

Fixes #484.
2017-03-30 21:13:24 +02:00
2016-05-03 10:27:59 +02:00
2017-03-19 20:57:28 +07:00
2017-03-19 20:57:28 +07:00
2017-03-19 20:57:28 +07:00
2017-02-22 23:03:09 +07:00
2016-04-15 12:13:33 +02:00
2017-03-02 11:13:00 +01:00
2017-02-17 11:14:32 +07:00
2017-03-30 21:13:24 +02:00
2017-03-10 00:07:27 +07:00
2017-03-10 00:07:27 +07:00
2017-03-10 00:07:27 +07:00
2016-12-14 11:54:01 +01:00
2017-03-19 20:57:28 +07:00
2016-04-06 23:10:52 +02:00
2017-03-30 21:13:24 +02:00
2017-02-28 18:34:15 +07:00

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.

Major TODOs:

  • Better packet loss detection
  • Connection migration
  • Client-side 0-RTT support
  • BBR congestion control

Guides

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{},
}

Building on Windows

Due to the low Windows timer resolution (see StackOverflow question) available with Go 1.6.x, some optimizations might not work when compiled with this version of the compiler. Please use Go 1.7 on Windows.

Description
No description provided
Readme MIT 46 MiB
Languages
Go 99.8%
Shell 0.1%