[forwardport] fix: avoid http3 for dns.google and www.google.com (#593) (#594)

This commit forward ports dedd84fa7ecb09f718f6b1a9c83999cb37b34dfa.

Original commit message:

- - -

This diff changes code the release/3.11 branch to ensure we're not using dns.google and www.google.com over HTTP3. As documented in https://github.com/ooni/probe/issues/1873, since this morning (approx) these services do not support HTTP3 anymore. (I didn't bother with checking whether this issue affects _other_ Google services; I just limited my analysis to the services that we were using as part of testing.)

This patch WILL require forward porting to the master branch.
This commit is contained in:
Simone Basso
2021-11-12 14:43:28 +01:00
committed by GitHub
parent 3dad324f09
commit 0a322ebab0
9 changed files with 90 additions and 33 deletions
@@ -0,0 +1,38 @@
// Package quictesting contains code useful to test QUIC.
package quictesting
import (
"context"
"net"
"strings"
"time"
"github.com/ooni/probe-cli/v3/internal/runtimex"
)
// Domain is the the domain we should be testing using QUIC.
const Domain = "www.cloudflare.com"
// Address is the address we should be testing using QUIC.
var Address string
// Endpoint returns the endpoint to test using QUIC by combining
// the Address variable with the given port.
func Endpoint(port string) string {
return net.JoinHostPort(Address, port)
}
func init() {
const timeout = 10 * time.Second
ctx, cancel := context.WithTimeout(context.Background(), timeout)
defer cancel()
reso := &net.Resolver{}
addrs, err := reso.LookupHost(ctx, Domain)
runtimex.PanicOnError(err, "reso.LookupHost failed")
for _, addr := range addrs {
if !strings.Contains(addr, ":") {
Address = addr
break
}
}
}
@@ -0,0 +1,20 @@
package quictesting
import (
"net"
"testing"
)
func TestWorksAsIntended(t *testing.T) {
epnt := Endpoint("443")
addr, port, err := net.SplitHostPort(epnt)
if err != nil {
t.Fatal(err)
}
if addr != Address {
t.Fatal("invalid addr")
}
if port != "443" {
t.Fatal("invalid port")
}
}