Merge branch 'develop' into fix/better-close-other-dissectors

This commit is contained in:
M. Mert Yildiran
2022-04-26 16:31:05 +03:00
4 changed files with 37 additions and 25 deletions

View File

@@ -427,6 +427,8 @@ type TcpReader interface {
GetEmitter() Emitter
GetIsClosed() bool
GetExtension() *Extension
SetTcpID(tcpID *TcpID)
SetCaptureTime(captureTime time.Time)
}
type TcpStream interface {

View File

@@ -147,3 +147,11 @@ func (reader *tcpReader) GetIsClosed() bool {
func (reader *tcpReader) GetExtension() *api.Extension {
return reader.extension
}
func (reader *tcpReader) SetTcpID(tcpID *api.TcpID) {
reader.tcpID = tcpID
}
func (reader *tcpReader) SetCaptureTime(captureTime time.Time) {
reader.captureTime = captureTime
}

View File

@@ -128,11 +128,28 @@ func (p *tlsPoller) handleTlsChunk(chunk *tlsChunk, extension *api.Extension,
key := buildTlsKey(chunk, ip, port)
reader, exists := p.readers[key]
tcpStream := tcp.NewTcpStreamDummy(api.Ebpf)
tcpReader := tcp.NewTcpReader(
make(chan api.TcpReaderDataMsg),
reader.progress,
"",
&api.TcpID{},
time.Time{},
tcpStream,
chunk.isRequest(),
false,
nil,
emitter,
&api.CounterPair{},
p.reqResMatcher,
)
if !exists {
reader = p.startNewTlsReader(chunk, ip, port, key, extension, emitter, options)
reader = p.startNewTlsReader(chunk, ip, port, key, extension, tcpReader, options)
p.readers[key] = reader
}
tcpReader.SetCaptureTime(time.Now())
reader.chunks <- chunk
if os.Getenv("MIZU_VERBOSE_TLS_TAPPER") == "true" {
@@ -143,7 +160,7 @@ func (p *tlsPoller) handleTlsChunk(chunk *tlsChunk, extension *api.Extension,
}
func (p *tlsPoller) startNewTlsReader(chunk *tlsChunk, ip net.IP, port uint16, key string, extension *api.Extension,
emitter api.Emitter, options *shared.TrafficFilteringOptions) *tlsReader {
tcpReader api.TcpReader, options *shared.TrafficFilteringOptions) *tlsReader {
reader := &tlsReader{
key: key,
@@ -154,40 +171,25 @@ func (p *tlsPoller) startNewTlsReader(chunk *tlsChunk, ip net.IP, port uint16, k
}
tcpid := p.buildTcpId(chunk, ip, port)
tcpReader.SetTcpID(&tcpid)
tlsEmitter := &tlsEmitter{
delegate: emitter,
delegate: tcpReader.GetEmitter(),
namespace: p.getNamespace(chunk.Pid),
}
go dissect(extension, reader, chunk.isRequest(), &tcpid, tlsEmitter, options, p.reqResMatcher)
go dissect(extension, reader, tcpReader, tlsEmitter, options)
return reader
}
func dissect(extension *api.Extension, reader *tlsReader, isRequest bool, tcpid *api.TcpID,
tlsEmitter *tlsEmitter, options *shared.TrafficFilteringOptions, reqResMatcher api.RequestResponseMatcher) {
func dissect(extension *api.Extension, reader *tlsReader, tcpReader api.TcpReader,
tlsEmitter *tlsEmitter, options *shared.TrafficFilteringOptions) {
b := bufio.NewReader(reader)
tcpStream := tcp.NewTcpStreamDummy(api.Ebpf)
tcpReader := tcp.NewTcpReader(
make(chan api.TcpReaderDataMsg),
reader.progress,
"",
tcpid,
time.Now(),
tcpStream,
isRequest,
false,
nil,
tlsEmitter,
&api.CounterPair{},
reqResMatcher,
)
err := extension.Dissector.Dissect(b, tcpReader, options)
if err != nil {
logger.Log.Warningf("Error dissecting TLS %v - %v", tcpid, err)
logger.Log.Warningf("Error dissecting TLS %v - %v", tcpReader.GetTcpID(), err)
}
}

View File

@@ -110,8 +110,8 @@ export const EntryDetailed = () => {
const [entryData, setEntryData] = useState(null);
useEffect(() => {
if (!focusedEntryId) return;
setEntryData(null);
setEntryData(null);
if (!focusedEntryId) return;
setIsLoading(true);
(async () => {
try {