aboutsummaryrefslogtreecommitdiffstats
path: root/device/peer.go
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2021-02-09 15:09:50 +0100
committerJason A. Donenfeld <Jason@zx2c4.com>2021-02-09 15:37:04 +0100
commit6ac1240821207c90708ac205f4f98eb8b82f3ee5 (patch)
tree1331654d522170b1942bfcd1741bcc3b6fb40672 /device/peer.go
parentdevice: lock elem in autodraining queue before freeing (diff)
downloadwireguard-go-6ac1240821207c90708ac205f4f98eb8b82f3ee5.tar.xz
wireguard-go-6ac1240821207c90708ac205f4f98eb8b82f3ee5.zip
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.go8
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