Skip to content

Commit

Permalink
improve: include a stream id field when parse http2 event (#734)
Browse files Browse the repository at this point in the history
  • Loading branch information
yuweizzz authored Feb 14, 2025
1 parent dcfc3cf commit d0245d5
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 6 deletions.
8 changes: 5 additions & 3 deletions pkg/event_processor/http2_request.go
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@ func (h2r *HTTP2Request) Display() []byte {
return h2r.reader.Bytes()
}
var encoding string
var dataFrameStreamID uint32
dataBuf := bytes.NewBuffer(nil)
frameBuf := bytes.NewBufferString("")
for {
Expand All @@ -104,26 +105,27 @@ func (h2r *HTTP2Request) Display() []byte {
}
switch f := f.(type) {
case *http2.MetaHeadersFrame:
frameBuf.WriteString(fmt.Sprintf("\nFrame Type\t=>\tHEADERS\n"))
frameBuf.WriteString(fmt.Sprintf("\nFrame Type\t=>\tHEADERS\nFrame StreamID\t=>\t%d\n", f.StreamID))
for _, header := range f.Fields {
frameBuf.WriteString(fmt.Sprintf("%s\n", header.String()))
if header.Name == "content-encoding" {
encoding = header.Value
}
}
case *http2.DataFrame:
dataFrameStreamID = f.StreamID
_, err := dataBuf.Write(f.Data())
if err != nil {
log.Println("[http2 request] Write HTTP2 Data Frame buffuer error:", err)
}
default:
fh := f.Header()
frameBuf.WriteString(fmt.Sprintf("\nFrame Type\t=>\t%s\n", fh.Type.String()))
frameBuf.WriteString(fmt.Sprintf("\nFrame Type\t=>\t%s\nFrame StreamID\t=>\t%d\n", fh.Type.String(), fh.StreamID))
}
}
// merge data frame
if dataBuf.Len() > 0 {
frameBuf.WriteString(fmt.Sprintf("\nFrame Type\t=>\tDATA\n"))
frameBuf.WriteString(fmt.Sprintf("\nFrame Type\t=>\tDATA\nFrame StreamID\t=>\t%d\n", dataFrameStreamID))
payload := dataBuf.Bytes()
switch encoding {
case "gzip":
Expand Down
8 changes: 5 additions & 3 deletions pkg/event_processor/http2_response.go
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,7 @@ func (h2r *HTTP2Response) IsDone() bool {

func (h2r *HTTP2Response) Display() []byte {
var encoding string
var dataFrameStreamID uint32
dataBuf := bytes.NewBuffer(nil)
frameBuf := bytes.NewBufferString("")
for {
Expand All @@ -135,26 +136,27 @@ func (h2r *HTTP2Response) Display() []byte {
}
switch f := f.(type) {
case *http2.MetaHeadersFrame:
frameBuf.WriteString(fmt.Sprintf("\nFrame Type\t=>\tHEADERS\n"))
frameBuf.WriteString(fmt.Sprintf("\nFrame Type\t=>\tHEADERS\nFrame StreamID\t=>\t%d\n", f.StreamID))
for _, header := range f.Fields {
frameBuf.WriteString(fmt.Sprintf("%s\n", header.String()))
if header.Name == "content-encoding" {
encoding = header.Value
}
}
case *http2.DataFrame:
dataFrameStreamID = f.StreamID
_, err := dataBuf.Write(f.Data())
if err != nil {
log.Println("[http2 response] Write HTTP2 Data Frame buffuer error:", err)
}
default:
fh := f.Header()
frameBuf.WriteString(fmt.Sprintf("\nFrame Type\t=>\t%s\n", fh.Type.String()))
frameBuf.WriteString(fmt.Sprintf("\nFrame Type\t=>\t%s\nFrame StreamID\t=>\t%d\n", fh.Type.String(), fh.StreamID))
}
}
// merge data frame
if dataBuf.Len() > 0 {
frameBuf.WriteString(fmt.Sprintf("\nFrame Type\t=>\tDATA\n"))
frameBuf.WriteString(fmt.Sprintf("\nFrame Type\t=>\tDATA\nFrame StreamID\t=>\t%d\n", dataFrameStreamID))
payload := dataBuf.Bytes()
switch encoding {
case "gzip":
Expand Down

0 comments on commit d0245d5

Please sign in to comment.