diff options
author | ian <ian@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-12-13 19:16:27 +0000 |
---|---|---|
committer | ian <ian@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-12-13 19:16:27 +0000 |
commit | 43eb1b72e5730064410a2d81e3f8d78ab62776cb (patch) | |
tree | c5132538d5da85ed816c7e1f9d93c4a503b838ab /libgo/go/net/http | |
parent | e27d80f7754f29f038c29ddcb2decd894d3e4aa4 (diff) | |
download | gcc-43eb1b72e5730064410a2d81e3f8d78ab62776cb.tar.gz |
libgo: Update to weekly.2011-12-02.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@182295 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgo/go/net/http')
-rw-r--r-- | libgo/go/net/http/cgi/host_test.go | 2 | ||||
-rw-r--r-- | libgo/go/net/http/cookie.go | 6 | ||||
-rw-r--r-- | libgo/go/net/http/cookie_test.go | 2 | ||||
-rw-r--r-- | libgo/go/net/http/export_test.go | 6 | ||||
-rw-r--r-- | libgo/go/net/http/fcgi/child.go | 2 | ||||
-rw-r--r-- | libgo/go/net/http/fs.go | 20 | ||||
-rw-r--r-- | libgo/go/net/http/fs_test.go | 4 | ||||
-rw-r--r-- | libgo/go/net/http/httptest/server.go | 4 | ||||
-rw-r--r-- | libgo/go/net/http/httputil/reverseproxy.go | 10 | ||||
-rw-r--r-- | libgo/go/net/http/pprof/pprof.go | 2 | ||||
-rw-r--r-- | libgo/go/net/http/serve_test.go | 12 | ||||
-rw-r--r-- | libgo/go/net/http/server.go | 17 | ||||
-rw-r--r-- | libgo/go/net/http/sniff.go | 34 | ||||
-rw-r--r-- | libgo/go/net/http/sniff_test.go | 23 | ||||
-rw-r--r-- | libgo/go/net/http/transport_test.go | 2 |
15 files changed, 83 insertions, 63 deletions
diff --git a/libgo/go/net/http/cgi/host_test.go b/libgo/go/net/http/cgi/host_test.go index e6e85e8db3b..849cb008b76 100644 --- a/libgo/go/net/http/cgi/host_test.go +++ b/libgo/go/net/http/cgi/host_test.go @@ -365,7 +365,7 @@ func TestCopyError(t *testing.T) { tries := 0 for tries < 15 && childRunning() { - time.Sleep(50e6 * int64(tries)) + time.Sleep(50 * time.Millisecond * time.Duration(tries)) tries++ } if childRunning() { diff --git a/libgo/go/net/http/cookie.go b/libgo/go/net/http/cookie.go index 69350143248..cad852242e2 100644 --- a/libgo/go/net/http/cookie.go +++ b/libgo/go/net/http/cookie.go @@ -115,7 +115,7 @@ func readSetCookies(h Header) []*Cookie { break } } - c.Expires = *exptime + c.Expires = exptime.UTC() continue case "path": c.Path = val @@ -146,8 +146,8 @@ func (c *Cookie) String() string { if len(c.Domain) > 0 { fmt.Fprintf(&b, "; Domain=%s", sanitizeValue(c.Domain)) } - if len(c.Expires.Zone) > 0 { - fmt.Fprintf(&b, "; Expires=%s", c.Expires.Format(time.RFC1123)) + if c.Expires.Unix() > 0 { + fmt.Fprintf(&b, "; Expires=%s", c.Expires.UTC().Format(time.RFC1123)) } if c.MaxAge > 0 { fmt.Fprintf(&b, "; Max-Age=%d", c.MaxAge) diff --git a/libgo/go/net/http/cookie_test.go b/libgo/go/net/http/cookie_test.go index 24adf202981..26bff93f643 100644 --- a/libgo/go/net/http/cookie_test.go +++ b/libgo/go/net/http/cookie_test.go @@ -123,7 +123,7 @@ var readSetCookiesTests = []struct { Path: "/", Domain: ".google.ch", HttpOnly: true, - Expires: time.Time{Year: 2011, Month: 11, Day: 23, Hour: 1, Minute: 5, Second: 3, ZoneOffset: 0, Zone: "GMT"}, + Expires: time.Date(2011, 11, 23, 1, 5, 3, 0, time.UTC), RawExpires: "Wed, 23-Nov-2011 01:05:03 GMT", Raw: "NID=99=YsDT5i3E-CXax-; expires=Wed, 23-Nov-2011 01:05:03 GMT; path=/; domain=.google.ch; HttpOnly", }}, diff --git a/libgo/go/net/http/export_test.go b/libgo/go/net/http/export_test.go index 3fe658641f8..13640ca85ee 100644 --- a/libgo/go/net/http/export_test.go +++ b/libgo/go/net/http/export_test.go @@ -7,6 +7,8 @@ package http +import "time" + func (t *Transport) IdleConnKeysForTesting() (keys []string) { keys = make([]string, 0) t.lk.Lock() @@ -33,8 +35,8 @@ func (t *Transport) IdleConnCountForTesting(cacheKey string) int { return len(conns) } -func NewTestTimeoutHandler(handler Handler, ch <-chan int64) Handler { - f := func() <-chan int64 { +func NewTestTimeoutHandler(handler Handler, ch <-chan time.Time) Handler { + f := func() <-chan time.Time { return ch } return &timeoutHandler{handler, f, ""} diff --git a/libgo/go/net/http/fcgi/child.go b/libgo/go/net/http/fcgi/child.go index 529440cbe92..c94b9a7b249 100644 --- a/libgo/go/net/http/fcgi/child.go +++ b/libgo/go/net/http/fcgi/child.go @@ -103,7 +103,7 @@ func (r *response) WriteHeader(code int) { } if r.header.Get("Date") == "" { - r.header.Set("Date", time.UTC().Format(http.TimeFormat)) + r.header.Set("Date", time.Now().UTC().Format(http.TimeFormat)) } fmt.Fprintf(r.w, "Status: %d %s\r\n", code, http.StatusText(code)) diff --git a/libgo/go/net/http/fs.go b/libgo/go/net/http/fs.go index 5aadac17a23..70e7849f167 100644 --- a/libgo/go/net/http/fs.go +++ b/libgo/go/net/http/fs.go @@ -52,7 +52,7 @@ type FileSystem interface { // served by the FileServer implementation. type File interface { Close() error - Stat() (*os.FileInfo, error) + Stat() (os.FileInfo, error) Readdir(count int) ([]os.FileInfo, error) Read([]byte) (int, error) Seek(offset int64, whence int) (int64, error) @@ -93,8 +93,8 @@ func dirList(w ResponseWriter, f File) { break } for _, d := range dirs { - name := d.Name - if d.IsDirectory() { + name := d.Name() + if d.IsDir() { name += "/" } // TODO htmlescape @@ -135,7 +135,7 @@ func serveFile(w ResponseWriter, r *Request, fs FileSystem, name string, redirec // redirect to canonical path: / at end of directory url // r.URL.Path always begins with / url := r.URL.Path - if d.IsDirectory() { + if d.IsDir() { if url[len(url)-1] != '/' { localRedirect(w, r, path.Base(url)+"/") return @@ -148,14 +148,14 @@ func serveFile(w ResponseWriter, r *Request, fs FileSystem, name string, redirec } } - if t, _ := time.Parse(TimeFormat, r.Header.Get("If-Modified-Since")); t != nil && d.Mtime_ns/1e9 <= t.Seconds() { + if t, err := time.Parse(TimeFormat, r.Header.Get("If-Modified-Since")); err == nil && !d.ModTime().After(t) { w.WriteHeader(StatusNotModified) return } - w.Header().Set("Last-Modified", time.SecondsToUTC(d.Mtime_ns/1e9).Format(TimeFormat)) + w.Header().Set("Last-Modified", d.ModTime().UTC().Format(TimeFormat)) // use contents of index.html for directory, if present - if d.IsDirectory() { + if d.IsDir() { index := name + indexPage ff, err := fs.Open(index) if err == nil { @@ -169,13 +169,13 @@ func serveFile(w ResponseWriter, r *Request, fs FileSystem, name string, redirec } } - if d.IsDirectory() { + if d.IsDir() { dirList(w, f) return } // serve file - size := d.Size + size := d.Size() code := StatusOK // If Content-Type isn't set, use the file's extension to find it. @@ -215,7 +215,7 @@ func serveFile(w ResponseWriter, r *Request, fs FileSystem, name string, redirec } size = ra.length code = StatusPartialContent - w.Header().Set("Content-Range", fmt.Sprintf("bytes %d-%d/%d", ra.start, ra.start+ra.length-1, d.Size)) + w.Header().Set("Content-Range", fmt.Sprintf("bytes %d-%d/%d", ra.start, ra.start+ra.length-1, d.Size())) } w.Header().Set("Accept-Ranges", "bytes") diff --git a/libgo/go/net/http/fs_test.go b/libgo/go/net/http/fs_test.go index 6697189900e..976ee75c7dd 100644 --- a/libgo/go/net/http/fs_test.go +++ b/libgo/go/net/http/fs_test.go @@ -190,8 +190,8 @@ func TestDirJoin(t *testing.T) { if err != nil { t.Fatalf("stat of %s: %v", name, err) } - if gfi.Ino != wfi.Ino { - t.Errorf("%s got different inode", name) + if !gfi.(*os.FileStat).SameFile(wfi.(*os.FileStat)) { + t.Errorf("%s got different file", name) } } test(Dir("/etc/"), "/hosts") diff --git a/libgo/go/net/http/httptest/server.go b/libgo/go/net/http/httptest/server.go index f09e826d9c9..5b02e143d4a 100644 --- a/libgo/go/net/http/httptest/server.go +++ b/libgo/go/net/http/httptest/server.go @@ -7,14 +7,12 @@ package httptest import ( - "crypto/rand" "crypto/tls" "flag" "fmt" "net" "net/http" "os" - "time" ) // A Server is an HTTP server listening on a system-chosen port on the @@ -113,8 +111,6 @@ func (s *Server) StartTLS() { } s.TLS = &tls.Config{ - Rand: rand.Reader, - Time: time.Seconds, NextProtos: []string{"http/1.1"}, Certificates: []tls.Certificate{cert}, } diff --git a/libgo/go/net/http/httputil/reverseproxy.go b/libgo/go/net/http/httputil/reverseproxy.go index bfcb3ca6b11..1dc83e7d032 100644 --- a/libgo/go/net/http/httputil/reverseproxy.go +++ b/libgo/go/net/http/httputil/reverseproxy.go @@ -31,11 +31,11 @@ type ReverseProxy struct { // If nil, http.DefaultTransport is used. Transport http.RoundTripper - // FlushInterval specifies the flush interval, in - // nanoseconds, to flush to the client while - // coping the response body. + // FlushInterval specifies the flush interval + // to flush to the client while copying the + // response body. // If zero, no periodic flushing is done. - FlushInterval int64 + FlushInterval time.Duration } func singleJoiningSlash(a, b string) string { @@ -135,7 +135,7 @@ type writeFlusher interface { type maxLatencyWriter struct { dst writeFlusher - latency int64 // nanos + latency time.Duration lk sync.Mutex // protects init of done, as well Write + Flush done chan bool diff --git a/libgo/go/net/http/pprof/pprof.go b/libgo/go/net/http/pprof/pprof.go index c0327a94824..2de147579d1 100644 --- a/libgo/go/net/http/pprof/pprof.go +++ b/libgo/go/net/http/pprof/pprof.go @@ -80,7 +80,7 @@ func Profile(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Could not enable CPU profiling: %s\n", err) return } - time.Sleep(sec * 1e9) + time.Sleep(time.Duration(sec) * time.Second) pprof.StopCPUProfile() } diff --git a/libgo/go/net/http/serve_test.go b/libgo/go/net/http/serve_test.go index 97a0b139e39..670b5418fcd 100644 --- a/libgo/go/net/http/serve_test.go +++ b/libgo/go/net/http/serve_test.go @@ -266,19 +266,19 @@ func TestServerTimeouts(t *testing.T) { } // Slow client that should timeout. - t1 := time.Nanoseconds() + t1 := time.Now() conn, err := net.Dial("tcp", addr.String()) if err != nil { t.Fatalf("Dial: %v", err) } buf := make([]byte, 1) n, err := conn.Read(buf) - latency := time.Nanoseconds() - t1 + latency := time.Now().Sub(t1) if n != 0 || err != io.EOF { t.Errorf("Read = %v, %v, wanted %v, %v", n, err, 0, io.EOF) } - if latency < second*0.20 /* fudge from 0.25 above */ { - t.Errorf("got EOF after %d ns, want >= %d", latency, second*0.20) + if latency < 200*time.Millisecond /* fudge from 0.25 above */ { + t.Errorf("got EOF after %s, want >= %s", latency, 200*time.Millisecond) } // Hit the HTTP server successfully again, verifying that the @@ -760,7 +760,7 @@ func TestTimeoutHandler(t *testing.T) { _, werr := w.Write([]byte("hi")) writeErrors <- werr }) - timeout := make(chan int64, 1) // write to this to force timeouts + timeout := make(chan time.Time, 1) // write to this to force timeouts ts := httptest.NewServer(NewTestTimeoutHandler(sayHi, timeout)) defer ts.Close() @@ -782,7 +782,7 @@ func TestTimeoutHandler(t *testing.T) { } // Times out: - timeout <- 1 + timeout <- time.Time{} res, err = Get(ts.URL) if err != nil { t.Error(err) diff --git a/libgo/go/net/http/server.go b/libgo/go/net/http/server.go index 7221d2508bb..125f3f214bb 100644 --- a/libgo/go/net/http/server.go +++ b/libgo/go/net/http/server.go @@ -347,7 +347,7 @@ func (w *response) WriteHeader(code int) { } if _, ok := w.header["Date"]; !ok { - w.Header().Set("Date", time.UTC().Format(TimeFormat)) + w.Header().Set("Date", time.Now().UTC().Format(TimeFormat)) } te := w.header.Get("Transfer-Encoding") @@ -467,7 +467,7 @@ func (w *response) Write(data []byte) (n int, err error) { // determine the content type. Accumulate the // initial writes in w.conn.body. // Cap m so that append won't allocate. - m := cap(w.conn.body) - len(w.conn.body) + m = cap(w.conn.body) - len(w.conn.body) if m > len(data) { m = len(data) } @@ -1013,8 +1013,8 @@ func (srv *Server) Serve(l net.Listener) error { // package main // // import ( -// "http" // "io" +// "net/http" // "log" // ) // @@ -1044,8 +1044,8 @@ func ListenAndServe(addr string, handler Handler) error { // A trivial example server is: // // import ( -// "http" // "log" +// "net/http" // ) // // func handler(w http.ResponseWriter, req *http.Request) { @@ -1084,7 +1084,6 @@ func (s *Server) ListenAndServeTLS(certFile, keyFile string) error { } config := &tls.Config{ Rand: rand.Reader, - Time: time.Seconds, NextProtos: []string{"http/1.1"}, } @@ -1112,9 +1111,9 @@ func (s *Server) ListenAndServeTLS(certFile, keyFile string) error { // (If msg is empty, a suitable default message will be sent.) // After such a timeout, writes by h to its ResponseWriter will return // ErrHandlerTimeout. -func TimeoutHandler(h Handler, ns int64, msg string) Handler { - f := func() <-chan int64 { - return time.After(ns) +func TimeoutHandler(h Handler, dt time.Duration, msg string) Handler { + f := func() <-chan time.Time { + return time.After(dt) } return &timeoutHandler{h, f, msg} } @@ -1125,7 +1124,7 @@ var ErrHandlerTimeout = errors.New("http: Handler timeout") type timeoutHandler struct { handler Handler - timeout func() <-chan int64 // returns channel producing a timeout + timeout func() <-chan time.Time // returns channel producing a timeout body string } diff --git a/libgo/go/net/http/sniff.go b/libgo/go/net/http/sniff.go index 5707c7f057f..c1c78e2417d 100644 --- a/libgo/go/net/http/sniff.go +++ b/libgo/go/net/http/sniff.go @@ -48,23 +48,23 @@ type sniffSig interface { // Data matching the table in section 6. var sniffSignatures = []sniffSig{ - htmlSig([]byte("<!DOCTYPE HTML")), - htmlSig([]byte("<HTML")), - htmlSig([]byte("<HEAD")), - htmlSig([]byte("<SCRIPT")), - htmlSig([]byte("<IFRAME")), - htmlSig([]byte("<H1")), - htmlSig([]byte("<DIV")), - htmlSig([]byte("<FONT")), - htmlSig([]byte("<TABLE")), - htmlSig([]byte("<A")), - htmlSig([]byte("<STYLE")), - htmlSig([]byte("<TITLE")), - htmlSig([]byte("<B")), - htmlSig([]byte("<BODY")), - htmlSig([]byte("<BR")), - htmlSig([]byte("<P")), - htmlSig([]byte("<!--")), + htmlSig("<!DOCTYPE HTML"), + htmlSig("<HTML"), + htmlSig("<HEAD"), + htmlSig("<SCRIPT"), + htmlSig("<IFRAME"), + htmlSig("<H1"), + htmlSig("<DIV"), + htmlSig("<FONT"), + htmlSig("<TABLE"), + htmlSig("<A"), + htmlSig("<STYLE"), + htmlSig("<TITLE"), + htmlSig("<B"), + htmlSig("<BODY"), + htmlSig("<BR"), + htmlSig("<P"), + htmlSig("<!--"), &maskedSig{mask: []byte("\xFF\xFF\xFF\xFF\xFF"), pat: []byte("<?xml"), skipWS: true, ct: "text/xml; charset=utf-8"}, diff --git a/libgo/go/net/http/sniff_test.go b/libgo/go/net/http/sniff_test.go index 86744eeb56b..6efa8ce1ca2 100644 --- a/libgo/go/net/http/sniff_test.go +++ b/libgo/go/net/http/sniff_test.go @@ -6,12 +6,14 @@ package http_test import ( "bytes" + "fmt" "io" "io/ioutil" "log" . "net/http" "net/http/httptest" "strconv" + "strings" "testing" ) @@ -112,3 +114,24 @@ func TestContentTypeWithCopy(t *testing.T) { } resp.Body.Close() } + +func TestSniffWriteSize(t *testing.T) { + ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) { + size, _ := strconv.Atoi(r.FormValue("size")) + written, err := io.WriteString(w, strings.Repeat("a", size)) + if err != nil { + t.Errorf("write of %d bytes: %v", size, err) + return + } + if written != size { + t.Errorf("write of %d bytes wrote %d bytes", size, written) + } + })) + defer ts.Close() + for _, size := range []int{0, 1, 200, 600, 999, 1000, 1023, 1024, 512 << 10, 1 << 20} { + _, err := Get(fmt.Sprintf("%s/?size=%d", ts.URL, size)) + if err != nil { + t.Fatalf("size %d: %v", size, err) + } + } +} diff --git a/libgo/go/net/http/transport_test.go b/libgo/go/net/http/transport_test.go index 77297972449..6f50f6f2767 100644 --- a/libgo/go/net/http/transport_test.go +++ b/libgo/go/net/http/transport_test.go @@ -263,7 +263,7 @@ func TestTransportServerClosingUnexpectedly(t *testing.T) { t.Fatalf(format, arg...) } t.Logf("retrying shortly after expected error: "+format, arg...) - time.Sleep(1e9 / int64(retries)) + time.Sleep(time.Second / time.Duration(retries)) } for retries >= 0 { retries-- |