func newServer() (*server, error) { var s server s.data = make(map[string][]byte) s.fwd = make(map[string]chan<- readerDone) hs := http.Server{ Addr: ":0", Handler: http.HandlerFunc(s.httpHandler), } ln, err := net.Listen("tcp", ":0") if err != nil { return nil, err } var h httpdown.HTTP s.s = h.Serve(&hs, ln) s.port = ln.Addr().(*net.TCPAddr).Port return &s, nil }