TUN-6777: Fix race condition in TestFunnelIdleTimeout

This commit is contained in:
cthuang 2022-09-20 09:10:47 +01:00 committed by Chung-Ting Huang
parent b457cca1e5
commit b1995b4dd1
1 changed files with 5 additions and 0 deletions

View File

@ -264,11 +264,14 @@ func testICMPRouterRejectNotEcho(t *testing.T, srcDstIP netip.Addr, msgs []icmp.
} }
type echoFlowResponder struct { type echoFlowResponder struct {
lock sync.Mutex
decoder *packet.ICMPDecoder decoder *packet.ICMPDecoder
respChan chan []byte respChan chan []byte
} }
func (efr *echoFlowResponder) SendPacket(dst netip.Addr, pk packet.RawPacket) error { func (efr *echoFlowResponder) SendPacket(dst netip.Addr, pk packet.RawPacket) error {
efr.lock.Lock()
defer efr.lock.Unlock()
copiedPacket := make([]byte, len(pk.Data)) copiedPacket := make([]byte, len(pk.Data))
copy(copiedPacket, pk.Data) copy(copiedPacket, pk.Data)
efr.respChan <- copiedPacket efr.respChan <- copiedPacket
@ -276,6 +279,8 @@ func (efr *echoFlowResponder) SendPacket(dst netip.Addr, pk packet.RawPacket) er
} }
func (efr *echoFlowResponder) Close() error { func (efr *echoFlowResponder) Close() error {
efr.lock.Lock()
defer efr.lock.Unlock()
close(efr.respChan) close(efr.respChan)
return nil return nil
} }