diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2021-02-09 15:09:50 +0100 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2021-02-09 15:37:04 +0100 |
commit | 6ac1240821207c90708ac205f4f98eb8b82f3ee5 (patch) | |
tree | 1331654d522170b1942bfcd1741bcc3b6fb40672 /device/receive.go | |
parent | 4b5d15ec2b1f148b4f718ed16d7e7f022b19fe1b (diff) |
device: do not attach finalizer to non-returned object
Before, the code attached a finalizer to an object that wasn't returned,
resulting in immediate garbage collection. Instead return the actual
pointer.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'device/receive.go')
-rw-r--r-- | device/receive.go | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/device/receive.go b/device/receive.go index 7acb7d9..3fc6831 100644 --- a/device/receive.go +++ b/device/receive.go @@ -167,7 +167,7 @@ func (device *Device) RoutineReceiveIncoming(IP int, bind conn.Bind) { // add to decryption queues if peer.isRunning.Get() { - peer.queue.inbound <- elem + peer.queue.inbound.c <- elem device.queue.decryption.c <- elem buffer = device.GetMessageBuffer() } else { @@ -402,7 +402,7 @@ func (peer *Peer) RoutineSequentialReceiver() { }() device.log.Verbosef("%v - Routine: sequential receiver - started", peer) - for elem := range peer.queue.inbound { + for elem := range peer.queue.inbound.c { if elem == nil { return } @@ -477,7 +477,7 @@ func (peer *Peer) RoutineSequentialReceiver() { if err != nil && !device.isClosed() { device.log.Errorf("Failed to write packet to TUN device: %v", err) } - if len(peer.queue.inbound) == 0 { + if len(peer.queue.inbound.c) == 0 { err = device.tun.device.Flush() if err != nil { peer.device.log.Errorf("Unable to flush packets: %v", err) |