]> git.ipfire.org Git - thirdparty/wireguard-go.git/commitdiff
Fixed UAPI deadlock
authorMathias Hall-Andersen <mathias@hall-andersen.dk>
Fri, 21 Jul 2017 13:17:43 +0000 (15:17 +0200)
committerMathias Hall-Andersen <mathias@hall-andersen.dk>
Fri, 21 Jul 2017 13:17:43 +0000 (15:17 +0200)
src/config.go
src/noise_protocol.go

index d92e8d711dadced23a86ed3e5cdf04920aad0779..2d9ac50a3e282e9364147761a1e46068684a42fc 100644 (file)
@@ -106,17 +106,17 @@ func ipcSetOperation(device *Device, socket *bufio.ReadWriter) *IPCError {
                key := parts[0]
                value := parts[1]
 
+               fmt.Println(key, value)
+
                switch key {
 
                /* interface configuration */
 
                case "private_key":
+                       var sk NoisePrivateKey
                        if value == "" {
-                               device.mutex.Lock()
-                               device.privateKey = NoisePrivateKey{}
-                               device.mutex.Unlock()
+                               device.SetPrivateKey(sk)
                        } else {
-                               var sk NoisePrivateKey
                                err := sk.FromHex(value)
                                if err != nil {
                                        logError.Println("Failed to set private_key:", err)
@@ -183,9 +183,7 @@ func ipcSetOperation(device *Device, socket *bufio.ReadWriter) *IPCError {
                        switch key {
 
                        case "remove":
-                               peer.mutex.Lock()
                                device.RemovePeer(peer.handshake.remoteStatic)
-                               peer.mutex.Unlock()
                                logDebug.Println("Removing", peer.String())
                                peer = nil
 
@@ -236,7 +234,6 @@ func ipcSetOperation(device *Device, socket *bufio.ReadWriter) *IPCError {
                                        return &IPCError{Code: ipcErrorInvalidValue}
                                }
                                ones, _ := network.Mask.Size()
-                               logError.Println(network, ones, network.IP)
                                device.routingTable.Insert(network.IP, uint(ones), peer)
 
                        default:
index 5fe6fb2c37376f3f29e24d1026c093c0e371a74a..ea0fd52e80f6e28cc2fabec4324f35adfb131eee 100644 (file)
@@ -253,8 +253,6 @@ func (device *Device) ConsumeMessageInitiation(msg *MessageInitiation) *Peer {
                }
                hash = mixHash(hash, msg.Timestamp[:])
 
-               // TODO: check for flood attack
-
                // check for replay attack
 
                return timestamp.After(handshake.lastTimestamp)