From a3f53e9761a928dc837935e8a663f377c9ca91d7 Mon Sep 17 00:00:00 2001 From: Toby Date: Tue, 1 Nov 2022 22:00:52 -0700 Subject: [PATCH] fix: update addrMap even when queue is full --- pkg/transport/pktconns/udphop/server.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/pkg/transport/pktconns/udphop/server.go b/pkg/transport/pktconns/udphop/server.go index 11b95cf..02af6fa 100644 --- a/pkg/transport/pktconns/udphop/server.go +++ b/pkg/transport/pktconns/udphop/server.go @@ -109,12 +109,13 @@ func (c *ObfsUDPHopServerPacketConn) recvRoutine(i int, conn net.PacketConn) { log.Printf("udphop: routine %d read error: %v", i, err) return } + // Update addrMap + c.addrMapMutex.Lock() + c.addrMap[addr.String()] = addrMapEntry{i, time.Now()} + c.addrMapMutex.Unlock() select { case c.recvQueue <- &udpPacket{buf, n, addr}: - // Update addrMap - c.addrMapMutex.Lock() - c.addrMap[addr.String()] = addrMapEntry{i, time.Now()} - c.addrMapMutex.Unlock() + // Packet sent to queue default: log.Printf("udphop: recv queue full, dropping packet from %s", addr) c.bufPool.Put(buf)