Moved endpoint into interface and simplified peer

This commit is contained in:
Mathias Hall-Andersen
2017-11-18 23:34:02 +01:00
parent fa399a91d5
commit d10126f883
6 changed files with 101 additions and 80 deletions

View File

@@ -53,8 +53,8 @@ func ipcGetOperation(device *Device, socket *bufio.ReadWriter) *IPCError {
defer peer.mutex.RUnlock()
send("public_key=" + peer.handshake.remoteStatic.ToHex())
send("preshared_key=" + peer.handshake.presharedKey.ToHex())
if peer.endpoint.set {
send("endpoint=" + peer.endpoint.value.DstToString())
if peer.endpoint != nil {
send("endpoint=" + peer.endpoint.DstToString())
}
nano := atomic.LoadInt64(&peer.stats.lastHandshakeNano)
@@ -255,17 +255,25 @@ func ipcSetOperation(device *Device, socket *bufio.ReadWriter) *IPCError {
case "endpoint":
// set endpoint destination and reset handshake timer
// set endpoint destination
err := func() error {
peer.mutex.Lock()
defer peer.mutex.Unlock()
endpoint := NewEndpoint()
if err := endpoint.SetDst(value); err != nil {
return err
}
peer.endpoint = endpoint
signalSend(peer.signal.handshakeReset)
return nil
}()
peer.mutex.Lock()
err := peer.endpoint.value.SetDst(value)
peer.endpoint.set = (err == nil)
peer.mutex.Unlock()
if err != nil {
logError.Println("Failed to set endpoint:", value)
return &IPCError{Code: ipcErrorInvalid}
}
signalSend(peer.signal.handshakeReset)
case "persistent_keepalive_interval":