diff options
Diffstat (limited to 'device/uapi.go')
-rw-r--r-- | device/uapi.go | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/device/uapi.go b/device/uapi.go index cbfe25e..bfef877 100644 --- a/device/uapi.go +++ b/device/uapi.go @@ -156,6 +156,7 @@ func (device *Device) IpcSetOperation(r io.Reader) (err error) { if deviceConfig { deviceConfig = false } + peer.handlePostConfig() // Load/create the peer we are now configuring. err := device.handlePublicKeyLine(peer, value) if err != nil { @@ -174,6 +175,7 @@ func (device *Device) IpcSetOperation(r io.Reader) (err error) { return err } } + peer.handlePostConfig() if err := scanner.Err(); err != nil { return ipcErrorf(ipc.IpcErrorIO, "failed to read input: %w", err) @@ -241,6 +243,12 @@ type ipcSetPeer struct { created bool // new reports whether this is a newly created peer } +func (peer *ipcSetPeer) handlePostConfig() { + if peer.Peer != nil && !peer.dummy && peer.Peer.device.isUp.Get() { + peer.SendStagedPackets() + } +} + func (device *Device) handlePublicKeyLine(peer *ipcSetPeer, value string) error { // Load/create the peer we are configuring. var publicKey NoisePublicKey |