func (s *Server) serveStream(st *framing.Stream, c net.Conn) { // TODO(kr): recover // TODO(kr): buffered reader and writer w, err := readRequest(st) if err != nil { log.Println("spdy: read request failed:", err) st.Reply(http.Header{":status": {"400"}}, framing.ControlFlagFin) st.Reset(framing.RefusedStream) return } w.req.RemoteAddr = c.RemoteAddr().String() handler := s.Handler if handler == nil { handler = http.DefaultServeMux } handler.ServeHTTP(w, w.req) w.finishRequest() }