forked from quic-go/quic-go
This will add the WIP TLS version as the preferred supported version. It is intended for developing and testing of IETF QUIC.
63 lines
1.3 KiB
Go
63 lines
1.3 KiB
Go
package main
|
|
|
|
import (
|
|
"bytes"
|
|
"flag"
|
|
"io"
|
|
"net/http"
|
|
"sync"
|
|
|
|
quic "github.com/lucas-clemente/quic-go"
|
|
"github.com/lucas-clemente/quic-go/h2quic"
|
|
"github.com/lucas-clemente/quic-go/internal/protocol"
|
|
"github.com/lucas-clemente/quic-go/internal/utils"
|
|
)
|
|
|
|
func main() {
|
|
verbose := flag.Bool("v", false, "verbose")
|
|
tls := flag.Bool("tls", false, "activate support for IETF QUIC (work in progress)")
|
|
flag.Parse()
|
|
urls := flag.Args()
|
|
|
|
if *verbose {
|
|
utils.SetLogLevel(utils.LogLevelDebug)
|
|
} else {
|
|
utils.SetLogLevel(utils.LogLevelInfo)
|
|
}
|
|
utils.SetLogTimeFormat("")
|
|
|
|
versions := protocol.SupportedVersions
|
|
if *tls {
|
|
versions = append([]protocol.VersionNumber{protocol.VersionTLS}, versions...)
|
|
}
|
|
|
|
hclient := &http.Client{
|
|
Transport: &h2quic.RoundTripper{
|
|
QuicConfig: &quic.Config{Versions: versions},
|
|
},
|
|
}
|
|
|
|
var wg sync.WaitGroup
|
|
wg.Add(len(urls))
|
|
for _, addr := range urls {
|
|
utils.Infof("GET %s", addr)
|
|
go func(addr string) {
|
|
rsp, err := hclient.Get(addr)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
utils.Infof("Got response for %s: %#v", addr, rsp)
|
|
|
|
body := &bytes.Buffer{}
|
|
_, err = io.Copy(body, rsp.Body)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
utils.Infof("Request Body:")
|
|
utils.Infof("%s", body.Bytes())
|
|
wg.Done()
|
|
}(addr)
|
|
}
|
|
wg.Wait()
|
|
}
|