diff options
author | Ondřej Surý <ondrej@sury.org> | 2011-10-06 09:35:45 +0200 |
---|---|---|
committer | Ondřej Surý <ondrej@sury.org> | 2011-10-06 09:35:45 +0200 |
commit | 6c7ca6e4d4e26e4c8cbe0d183966011b3b088a0a (patch) | |
tree | fddeb87db026d64a1d8e597dd0c69d685f433597 /src/pkg/http/serve_test.go | |
parent | 04f99b387021a8ce32a8795360cba9beaf986a81 (diff) | |
download | golang-6c7ca6e4d4e26e4c8cbe0d183966011b3b088a0a.tar.gz |
Imported Upstream version 2011.09.21upstream-weekly/2011.09.21
Diffstat (limited to 'src/pkg/http/serve_test.go')
-rw-r--r-- | src/pkg/http/serve_test.go | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/pkg/http/serve_test.go b/src/pkg/http/serve_test.go index 17439110f..1bb748c3c 100644 --- a/src/pkg/http/serve_test.go +++ b/src/pkg/http/serve_test.go @@ -535,6 +535,30 @@ func TestHeadResponses(t *testing.T) { } } +func TestTLSHandshakeTimeout(t *testing.T) { + if true { + t.Logf("Skipping broken test; issue 2281") + return + } + ts := httptest.NewUnstartedServer(HandlerFunc(func(w ResponseWriter, r *Request) {})) + ts.Config.ReadTimeout = 250e6 + ts.StartTLS() + defer ts.Close() + conn, err := net.Dial("tcp", ts.Listener.Addr().String()) + if err != nil { + t.Fatalf("Dial: %v", err) + } + defer conn.Close() + timer := time.AfterFunc(10e9, func() { t.Fatalf("Timeout") }) + defer timer.Stop() + + var buf [1]byte + n, err := conn.Read(buf[:]) + if err == nil || n != 0 { + t.Errorf("Read = %d, %v; want an error and no bytes", n, err) + } +} + func TestTLSServer(t *testing.T) { ts := httptest.NewTLSServer(HandlerFunc(func(w ResponseWriter, r *Request) { if r.TLS != nil { @@ -545,6 +569,19 @@ func TestTLSServer(t *testing.T) { } })) defer ts.Close() + + // Connect an idle TCP connection to this server before we run + // our real tests. This idle connection used to block forever + // in the TLS handshake, preventing future connections from + // being accepted. It may prevent future accidental blocking + // in newConn. + idleConn, err := net.Dial("tcp", ts.Listener.Addr().String()) + if err != nil { + t.Fatalf("Dial: %v", err) + } + defer idleConn.Close() + time.AfterFunc(10e9, func() { t.Fatalf("Timeout") }) + if !strings.HasPrefix(ts.URL, "https://") { t.Fatalf("expected test TLS server to start with https://, got %q", ts.URL) } |