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/peer.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/peer.go')
-rw-r--r-- | device/peer.go | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/device/peer.go b/device/peer.go index 49b9acb..69238a6 100644 --- a/device/peer.go +++ b/device/peer.go @@ -57,8 +57,8 @@ type Peer struct { queue struct { staged chan *QueueOutboundElement // staged packets before a handshake is available - outbound chan *QueueOutboundElement // sequential ordering of udp transmission - inbound chan *QueueInboundElement // sequential ordering of tun writing + outbound *autodrainingOutboundQueue // sequential ordering of udp transmission + inbound *autodrainingInboundQueue // sequential ordering of tun writing } cookieGenerator CookieGenerator @@ -253,8 +253,8 @@ func (peer *Peer) Stop() { peer.timersStop() // Signal that RoutineSequentialSender and RoutineSequentialReceiver should exit. - peer.queue.inbound <- nil - peer.queue.outbound <- nil + peer.queue.inbound.c <- nil + peer.queue.outbound.c <- nil peer.stopping.Wait() peer.device.queue.encryption.wg.Done() // no more writes to encryption queue from us |