Browse Source

http2: add more HEADERS and error logging in GODEBUG=http2debug=2 mode

To help debug golang/go#16572

Change-Id: Ia154faedd243a06a4110f6e6a4885b7cd0a04e1f
Reviewed-on: https://go-review.googlesource.com/25401
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Brad Fitzpatrick 9 years ago
parent
commit
f6d2119838
2 changed files with 10 additions and 1 deletions
  1. 9 0
      http2/frame.go
  2. 1 1
      http2/http2_test.go

+ 9 - 0
http2/frame.go

@@ -1419,6 +1419,9 @@ func (fr *Framer) readMetaFrame(hf *HeadersFrame) (*MetaHeadersFrame, error) {
 	hdec.SetEmitEnabled(true)
 	hdec.SetMaxStringLength(fr.maxHeaderStringLen())
 	hdec.SetEmitFunc(func(hf hpack.HeaderField) {
+		if VerboseLogs && logFrameReads {
+			log.Printf("http2: decoded hpack field %+v", hf)
+		}
 		if !httplex.ValidHeaderFieldValue(hf.Value) {
 			invalid = headerFieldValueError(hf.Value)
 		}
@@ -1477,10 +1480,16 @@ func (fr *Framer) readMetaFrame(hf *HeadersFrame) (*MetaHeadersFrame, error) {
 	}
 	if invalid != nil {
 		fr.errDetail = invalid
+		if VerboseLogs {
+			log.Printf("http2: invalid header: %v", invalid)
+		}
 		return nil, StreamError{mh.StreamID, ErrCodeProtocol}
 	}
 	if err := mh.checkPseudos(); err != nil {
 		fr.errDetail = err
+		if VerboseLogs {
+			log.Printf("http2: invalid pseudo headers: %v", err)
+		}
 		return nil, StreamError{mh.StreamID, ErrCodeProtocol}
 	}
 	return mh, nil

+ 1 - 1
http2/http2_test.go

@@ -28,7 +28,7 @@ func condSkipFailingTest(t *testing.T) {
 
 func init() {
 	DebugGoroutines = true
-	flag.BoolVar(&VerboseLogs, "verboseh2", false, "Verbose HTTP/2 debug logging")
+	flag.BoolVar(&VerboseLogs, "verboseh2", VerboseLogs, "Verbose HTTP/2 debug logging")
 }
 
 func TestSettingString(t *testing.T) {