const prefaceTimeout …
const firstSettingsTimeout …
const handlerChunkWriteSize …
const defaultMaxStreams …
const maxQueuedControlFrames …
var errClientDisconnected …
var errClosedBody …
var errHandlerComplete …
var errStreamClosed …
var responseWriterStatePool …
var testHookOnConn …
var testHookGetServerConn …
var testHookOnPanicMu …
var testHookOnPanic …
type Server …
func (s *Server) markNewGoroutine() { … }
func (s *Server) now() time.Time { … }
func (s *Server) newTimer(d time.Duration) timer { … }
func (s *Server) afterFunc(d time.Duration, f func()) timer { … }
type serverInternalState …
func (s *serverInternalState) registerConn(sc *serverConn) { … }
func (s *serverInternalState) unregisterConn(sc *serverConn) { … }
func (s *serverInternalState) startGracefulShutdown() { … }
func ConfigureServer(s *http.Server, conf *Server) error { … }
type ServeConnOpts …
func (o *ServeConnOpts) context() context.Context { … }
func (o *ServeConnOpts) baseConfig() *http.Server { … }
func (o *ServeConnOpts) handler() http.Handler { … }
func (s *Server) ServeConn(c net.Conn, opts *ServeConnOpts) { … }
func (s *Server) serveConn(c net.Conn, opts *ServeConnOpts, newf func(*serverConn)) { … }
func serverConnBaseContext(c net.Conn, opts *ServeConnOpts) (ctx context.Context, cancel func()) { … }
func (sc *serverConn) rejectConn(err ErrCode, debug string) { … }
type serverConn …
func (sc *serverConn) maxHeaderListSize() uint32 { … }
func (sc *serverConn) curOpenStreams() uint32 { … }
type stream …
func (sc *serverConn) Framer() *Framer { … }
func (sc *serverConn) CloseConn() error { … }
func (sc *serverConn) Flush() error { … }
func (sc *serverConn) HeaderEncoder() (*hpack.Encoder, *bytes.Buffer) { … }
func (sc *serverConn) state(streamID uint32) (streamState, *stream) { … }
func (sc *serverConn) setConnState(state http.ConnState) { … }
func (sc *serverConn) vlogf(format string, args ...interface{ … }
func (sc *serverConn) logf(format string, args ...interface{ … }
func errno(v error) uintptr { … }
func isClosedConnError(err error) bool { … }
func (sc *serverConn) condlogf(err error, format string, args ...interface{ … }
const maxCachedCanonicalHeadersKeysSize …
func (sc *serverConn) canonicalHeader(v string) string { … }
type readFrameResult …
func (sc *serverConn) readFrames() { … }
type frameWriteResult …
func (sc *serverConn) writeFrameAsync(wr FrameWriteRequest, wd *writeData) { … }
func (sc *serverConn) closeAllStreamsOnConnClose() { … }
func (sc *serverConn) stopShutdownTimer() { … }
func (sc *serverConn) notePanic() { … }
func (sc *serverConn) serve(conf http2Config) { … }
func (sc *serverConn) handlePingTimer(lastFrameReadTime time.Time) { … }
type serverMessage …
var settingsTimerMsg …
var idleTimerMsg …
var readIdleTimerMsg …
var shutdownTimerMsg …
var gracefulShutdownMsg …
var handlerDoneMsg …
func (sc *serverConn) onSettingsTimer() { … }
func (sc *serverConn) onIdleTimer() { … }
func (sc *serverConn) onReadIdleTimer() { … }
func (sc *serverConn) onShutdownTimer() { … }
func (sc *serverConn) sendServeMsg(msg interface{ … }
var errPrefaceTimeout …
func (sc *serverConn) readPreface() error { … }
var errChanPool …
var writeDataPool …
func (sc *serverConn) writeDataFromHandler(stream *stream, data []byte, endStream bool) error { … }
func (sc *serverConn) writeFrameFromHandler(wr FrameWriteRequest) error { … }
func (sc *serverConn) writeFrame(wr FrameWriteRequest) { … }
func (sc *serverConn) startFrameWrite(wr FrameWriteRequest) { … }
var errHandlerPanicked …
func (sc *serverConn) wroteFrame(res frameWriteResult) { … }
func (sc *serverConn) scheduleFrameWrite() { … }
func (sc *serverConn) startGracefulShutdown() { … }
var goAwayTimeout …
func (sc *serverConn) startGracefulShutdownInternal() { … }
func (sc *serverConn) goAway(code ErrCode) { … }
func (sc *serverConn) shutDownIn(d time.Duration) { … }
func (sc *serverConn) resetStream(se StreamError) { … }
func (sc *serverConn) processFrameFromReader(res readFrameResult) bool { … }
func (sc *serverConn) processFrame(f Frame) error { … }
func (sc *serverConn) processPing(f *PingFrame) error { … }
func (sc *serverConn) processWindowUpdate(f *WindowUpdateFrame) error { … }
func (sc *serverConn) processResetStream(f *RSTStreamFrame) error { … }
func (sc *serverConn) closeStream(st *stream, err error) { … }
func (sc *serverConn) processSettings(f *SettingsFrame) error { … }
func (sc *serverConn) processSetting(s Setting) error { … }
func (sc *serverConn) processSettingInitialWindowSize(val uint32) error { … }
func (sc *serverConn) processData(f *DataFrame) error { … }
func (sc *serverConn) processGoAway(f *GoAwayFrame) error { … }
func (st *stream) isPushed() bool { … }
func (st *stream) endStream() { … }
func (st *stream) copyTrailersToHandlerRequest() { … }
func (st *stream) onReadTimeout() { … }
func (st *stream) onWriteTimeout() { … }
func (sc *serverConn) processHeaders(f *MetaHeadersFrame) error { … }
func (sc *serverConn) upgradeRequest(req *http.Request) { … }
func (st *stream) processTrailerHeaders(f *MetaHeadersFrame) error { … }
func (sc *serverConn) checkPriority(streamID uint32, p PriorityParam) error { … }
func (sc *serverConn) processPriority(f *PriorityFrame) error { … }
func (sc *serverConn) newStream(id, pusherID uint32, state streamState) *stream { … }
func (sc *serverConn) newWriterAndRequest(st *stream, f *MetaHeadersFrame) (*responseWriter, *http.Request, error) { … }
type requestParam …
func (sc *serverConn) newWriterAndRequestNoBody(st *stream, rp requestParam) (*responseWriter, *http.Request, error) { … }
func (sc *serverConn) newResponseWriter(st *stream, req *http.Request) *responseWriter { … }
type unstartedHandler …
func (sc *serverConn) scheduleHandler(streamID uint32, rw *responseWriter, req *http.Request, handler func(http.ResponseWriter, *http.Request)) error { … }
func (sc *serverConn) handlerDone() { … }
func (sc *serverConn) runHandler(rw *responseWriter, req *http.Request, handler func(http.ResponseWriter, *http.Request)) { … }
func handleHeaderListTooLong(w http.ResponseWriter, r *http.Request) { … }
func (sc *serverConn) writeHeaders(st *stream, headerData *writeResHeaders) error { … }
func (sc *serverConn) write100ContinueHeaders(st *stream) { … }
type bodyReadMsg …
func (sc *serverConn) noteBodyReadFromHandler(st *stream, n int, err error) { … }
func (sc *serverConn) noteBodyRead(st *stream, n int) { … }
func (sc *serverConn) sendWindowUpdate32(st *stream, n int32) { … }
func (sc *serverConn) sendWindowUpdate(st *stream, n int) { … }
type requestBody …
func (b *requestBody) Close() error { … }
func (b *requestBody) Read(p []byte) (n int, err error) { … }
type responseWriter …
var _ …
var _ …
var _ …
type responseWriterState …
type chunkWriter …
func (cw chunkWriter) Write(p []byte) (n int, err error) { … }
func (rws *responseWriterState) hasTrailers() bool { … }
func (rws *responseWriterState) hasNonemptyTrailers() bool { … }
func (rws *responseWriterState) declareTrailer(k string) { … }
func (rws *responseWriterState) writeChunk(p []byte) (n int, err error) { … }
const TrailerPrefix …
func (rws *responseWriterState) promoteUndeclaredTrailers() { … }
func (w *responseWriter) SetReadDeadline(deadline time.Time) error { … }
func (w *responseWriter) SetWriteDeadline(deadline time.Time) error { … }
func (w *responseWriter) Flush() { … }
func (w *responseWriter) FlushError() error { … }
func (w *responseWriter) CloseNotify() <-chan bool { … }
func (w *responseWriter) Header() http.Header { … }
func checkWriteHeaderCode(code int) { … }
func (w *responseWriter) WriteHeader(code int) { … }
func (rws *responseWriterState) writeHeader(code int) { … }
func cloneHeader(h http.Header) http.Header { … }
func (w *responseWriter) Write(p []byte) (n int, err error) { … }
func (w *responseWriter) WriteString(s string) (n int, err error) { … }
func (w *responseWriter) write(lenData int, dataB []byte, dataS string) (n int, err error) { … }
func (w *responseWriter) handlerDone() { … }
var ErrRecursivePush …
var ErrPushLimitReached …
var _ …
func (w *responseWriter) Push(target string, opts *http.PushOptions) error { … }
type startPushRequest …
func (sc *serverConn) startPush(msg *startPushRequest) { … }
func foreachHeaderElement(v string, fn func(string)) { … }
var connHeaders …
func checkValidHTTP2RequestHeaders(h http.Header) error { … }
func new400Handler(err error) http.HandlerFunc { … }
func h1ServerKeepAlivesDisabled(hs *http.Server) bool { … }
func (sc *serverConn) countError(name string, err error) error { … }