From 094a7c3da462031390c43514fb3824b01fd8c2b5 Mon Sep 17 00:00:00 2001 From: "M. Mert Yildiran" Date: Thu, 2 Jun 2022 03:11:42 +0300 Subject: [PATCH] Compress if it's gzip chunk (probably wrong!) --- tap/tlstapper/tls_poller.go | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/tap/tlstapper/tls_poller.go b/tap/tlstapper/tls_poller.go index 991240d97..812709e0d 100644 --- a/tap/tlstapper/tls_poller.go +++ b/tap/tlstapper/tls_poller.go @@ -3,6 +3,7 @@ package tlstapper import ( "bufio" "bytes" + "compress/gzip" "fmt" "log" "sync" @@ -161,8 +162,22 @@ func (p *tlsPoller) pollGolangReadWrite(rd *ringbuf.Reader, emitter api.Emitter, connection = _connection.(*golangConnection) } + data := []byte(b.Data[:]) + if b.IsGzipChunk { + // Compress if it's gzip chunk (probably wrong!) connection.Gzipped = true + var buf bytes.Buffer + gz := gzip.NewWriter(&buf) + if _, err := gz.Write(data); err != nil { + log.Printf("gzip write: %s", err) + continue + } + if err := gz.Close(); err != nil { + log.Printf("gzip close: %s", err) + continue + } + data = buf.Bytes() } if b.IsRequest { @@ -184,12 +199,12 @@ func (p *tlsPoller) pollGolangReadWrite(rd *ringbuf.Reader, emitter api.Emitter, go dissect(p.extension, connection.ClientReader, options) go dissect(p.extension, connection.ServerReader, options) - request := make([]byte, len(b.Data[:b.Len])) - copy(request, b.Data[:b.Len]) + request := make([]byte, len(data[:b.Len])) + copy(request, data[:b.Len]) connection.ClientReader.send(request) } else { - response := make([]byte, len(b.Data[:b.Len])) - copy(response, b.Data[:b.Len]) + response := make([]byte, len(data[:b.Len])) + copy(response, data[:b.Len]) connection.ServerReader.send(response) } }