diff --git a/decoder/decoder.go b/decoder/decoder.go index db7c620..cb73f40 100644 --- a/decoder/decoder.go +++ b/decoder/decoder.go @@ -3,13 +3,14 @@ package decoder import ( "bytes" "container/list" - "github.com/segmentio/encoding/json" "net" "strconv" "strings" "sync/atomic" "time" + "github.com/segmentio/encoding/json" + "github.com/google/gopacket" "github.com/google/gopacket/layers" "github.com/google/gopacket/tcpassembly" @@ -932,7 +933,6 @@ func (d *Decoder) processTransport(foundLayerTypes *[]gopacket.LayerType, udp *l case layers.LayerTypeTCP: pkt.SrcPort = uint16(tcp.SrcPort) pkt.DstPort = uint16(tcp.DstPort) - //pkt.Payload = tcp.Payload atomic.AddUint64(&d.tcpCount, 1) logp.Debug("payload", "TCP", pkt) @@ -947,12 +947,15 @@ func (d *Decoder) processTransport(foundLayerTypes *[]gopacket.LayerType, udp *l if !checkResult || payloadList.Len() <= 0 { return } - } else { + payloadList.PushBack(pkt.Payload) - } - for elem := payloadList.Front(); elem != nil; elem = elem.Next() { - extractCID(pkt.SrcIP, pkt.SrcPort, pkt.DstIP, pkt.DstPort, elem.Value.([]byte)) + for elem := payloadList.Front(); elem != nil; elem = elem.Next() { + extractCID(pkt.SrcIP, pkt.SrcPort, pkt.DstIP, pkt.DstPort, elem.Value.([]byte)) + } + } else { + pkt.Payload = tcp.Payload + extractCID(pkt.SrcIP, pkt.SrcPort, pkt.DstIP, pkt.DstPort, pkt.Payload) } case layers.LayerTypeSCTP: pkt.SrcPort = uint16(sctp.SrcPort) diff --git a/main.go b/main.go index 0036489..1a1f864 100644 --- a/main.go +++ b/main.go @@ -12,7 +12,7 @@ import ( "github.com/sipcapture/heplify/sniffer" ) -const version = "heplify 1.65.10" +const version = "heplify 1.65.11" func createFlags() {