]> git.ipfire.org Git - thirdparty/wireguard-go.git/commitdiff
device: remove QueueOutboundElement.dropped
authorJosh Bleecher Snyder <josh@tailscale.com>
Sun, 17 Jan 2021 17:40:18 +0000 (09:40 -0800)
committerJason A. Donenfeld <Jason@zx2c4.com>
Wed, 20 Jan 2021 18:57:05 +0000 (19:57 +0100)
If we block when enqueuing encryption elements to the queue,
then we never drop them.

Signed-off-by: Josh Bleecher Snyder <josh@tailscale.com>
device/send.go

index c9b62e6b378a81978506e6a23189dfddaac7a407..1d27799bc336e4cfafeed802803000881cc86ff9 100644 (file)
@@ -43,7 +43,6 @@ import (
  */
 
 type QueueOutboundElement struct {
-       dropped int32
        sync.Mutex
        buffer  *[MaxMessageSize]byte // slice holding the packet data
        packet  []byte                // slice of "buffer" (always!)
@@ -54,7 +53,6 @@ type QueueOutboundElement struct {
 
 func (device *Device) NewOutboundElement() *QueueOutboundElement {
        elem := device.GetOutboundElement()
-       elem.dropped = AtomicFalse
        elem.buffer = device.GetMessageBuffer()
        elem.Mutex = sync.Mutex{}
        elem.nonce = 0
@@ -73,14 +71,6 @@ func (elem *QueueOutboundElement) clearPointers() {
        elem.peer = nil
 }
 
-func (elem *QueueOutboundElement) Drop() {
-       atomic.StoreInt32(&elem.dropped, AtomicTrue)
-}
-
-func (elem *QueueOutboundElement) IsDropped() bool {
-       return atomic.LoadInt32(&elem.dropped) == AtomicTrue
-}
-
 func addToNonceQueue(queue chan *QueueOutboundElement, elem *QueueOutboundElement, device *Device) {
        for {
                select {
@@ -436,7 +426,6 @@ NextPacket:
                        }
 
                        elem.keypair = keypair
-                       elem.dropped = AtomicFalse
                        elem.Lock()
 
                        // add to parallel and sequential queue
@@ -476,15 +465,7 @@ func (device *Device) RoutineEncryption() {
        logDebug.Println("Routine: encryption worker - started")
 
        for elem := range device.queue.encryption.c {
-
-               // check if dropped
-
-               if elem.IsDropped() {
-                       continue
-               }
-
                // populate header fields
-
                header := elem.buffer[:MessageTransportHeaderSize]
 
                fieldType := header[0:4]
@@ -532,10 +513,6 @@ func (peer *Peer) RoutineSequentialSender() {
 
        for elem := range peer.queue.outbound {
                elem.Lock()
-               if elem.IsDropped() {
-                       device.PutOutboundElement(elem)
-                       continue
-               }
                if !peer.isRunning.Get() {
                        // peer has been stopped; return re-usable elems to the shared pool.
                        // This is an optimization only. It is possible for the peer to be stopped