fix(trace): limit channel buffer size in TCP and UDP tracing to avoid deadlock

This commit is contained in:
方鸻
2024-07-12 17:53:55 +08:00
parent c1cd80232a
commit a539a4e079
3 changed files with 3 additions and 3 deletions

View File

@@ -264,7 +264,7 @@ func (t *TCPTracer) send(ttl int) error {
return err
}
t.inflightRequestLock.Lock()
hopCh := make(chan Hop)
hopCh := make(chan Hop, 1)
t.inflightRequest[int(sequenceNumber)] = hopCh
t.inflightRequestLock.Unlock()
/*

View File

@@ -251,7 +251,7 @@ func (t *TCPTracerv6) send(ttl int) error {
}
// log.Println(ttl, sequenceNumber)
t.inflightRequestLock.Lock()
hopCh := make(chan Hop)
hopCh := make(chan Hop, 1)
t.inflightRequest[int(sequenceNumber)] = hopCh
t.inflightRequestLock.Unlock()

View File

@@ -225,7 +225,7 @@ func (t *UDPTracer) send(ttl int) error {
// 在对inflightRequest进行写操作的时候应该加锁保护以免多个goroutine协程试图同时写入造成panic
t.inflightRequestLock.Lock()
hopCh := make(chan Hop)
hopCh := make(chan Hop, 1)
t.inflightRequest[srcPort] = hopCh
t.inflightRequestLock.Unlock()
defer func() {