mirror of
https://github.com/amnezia-vpn/amneziawg-go.git
synced 2025-07-31 17:12:49 +02:00
handle postconfig error & fix uniquness
This commit is contained in:
parent
a27b1dba96
commit
5fbb7fdb08
2 changed files with 41 additions and 25 deletions
|
@ -565,28 +565,7 @@ func (device *Device) isAdvancedSecurityOn() bool {
|
||||||
return device.isASecOn.IsSet()
|
return device.isASecOn.IsSet()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (device *Device) handlePostConfig(tempASecCfg *aSecCfgType) (err error) {
|
func (device *Device) handlePostConfig(tempASecCfg *aSecCfgType) (err error) {
|
||||||
isSameMap := map[uint32]bool{}
|
|
||||||
isSameMap[tempASecCfg.initPacketMagicHeader] = true
|
|
||||||
isSameMap[tempASecCfg.responsePacketMagicHeader] = true
|
|
||||||
isSameMap[tempASecCfg.underloadPacketMagicHeader] = true
|
|
||||||
isSameMap[tempASecCfg.transportPacketMagicHeader] = true
|
|
||||||
|
|
||||||
// size will be different if same values
|
|
||||||
if len(isSameMap) != 4 {
|
|
||||||
err = ipcErrorf(
|
|
||||||
ipc.IpcErrorInvalid,
|
|
||||||
`magic headers should differ; got: init:%d; recv:%d; unde:%d;
|
|
||||||
tran:%d`,
|
|
||||||
tempASecCfg.initPacketMagicHeader,
|
|
||||||
tempASecCfg.responsePacketMagicHeader,
|
|
||||||
tempASecCfg.underloadPacketMagicHeader,
|
|
||||||
tempASecCfg.transportPacketMagicHeader,
|
|
||||||
)
|
|
||||||
device.isASecOn.UnSet()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
isASecOn := false
|
isASecOn := false
|
||||||
device.aSecMux.Lock()
|
device.aSecMux.Lock()
|
||||||
if tempASecCfg.junkPacketCount < 0 {
|
if tempASecCfg.junkPacketCount < 0 {
|
||||||
|
@ -737,10 +716,41 @@ func (device *Device) handlePostConfig(tempASecCfg *aSecCfgType) (err error) {
|
||||||
MessageTransportType = device.aSecCfg.transportPacketMagicHeader
|
MessageTransportType = device.aSecCfg.transportPacketMagicHeader
|
||||||
} else {
|
} else {
|
||||||
device.log.Verbosef("UAPI: Using default transport type")
|
device.log.Verbosef("UAPI: Using default transport type")
|
||||||
|
|
||||||
MessageTransportType = 4
|
MessageTransportType = 4
|
||||||
}
|
}
|
||||||
|
|
||||||
|
isSameMap := map[uint32]bool{}
|
||||||
|
isSameMap[MessageInitiationType] = true
|
||||||
|
isSameMap[MessageResponseType] = true
|
||||||
|
isSameMap[MessageCookieReplyType] = true
|
||||||
|
isSameMap[MessageTransportType] = true
|
||||||
|
|
||||||
|
// size will be different if same values
|
||||||
|
if len(isSameMap) != 4 {
|
||||||
|
if err != nil {
|
||||||
|
err = ipcErrorf(
|
||||||
|
ipc.IpcErrorInvalid,
|
||||||
|
`magic headers should differ; got: init:%d; recv:%d; unde:%d;
|
||||||
|
tran:%d; %w`,
|
||||||
|
MessageInitiationType,
|
||||||
|
MessageResponseType,
|
||||||
|
MessageCookieReplyType,
|
||||||
|
MessageTransportType,
|
||||||
|
err,
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
err = ipcErrorf(
|
||||||
|
ipc.IpcErrorInvalid,
|
||||||
|
`magic headers should differ; got: init:%d; recv:%d; unde:%d;
|
||||||
|
tran:%d`,
|
||||||
|
MessageInitiationType,
|
||||||
|
MessageResponseType,
|
||||||
|
MessageCookieReplyType,
|
||||||
|
MessageTransportType,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
newInitSize := MessageInitiationSize + device.aSecCfg.initPacketJunkSize
|
newInitSize := MessageInitiationSize + device.aSecCfg.initPacketJunkSize
|
||||||
newResponseSize := MessageResponseSize + device.aSecCfg.responsePacketJunkSize
|
newResponseSize := MessageResponseSize + device.aSecCfg.responsePacketJunkSize
|
||||||
|
|
||||||
|
|
|
@ -191,7 +191,10 @@ func (device *Device) IpcSetOperation(r io.Reader) (err error) {
|
||||||
line := scanner.Text()
|
line := scanner.Text()
|
||||||
if line == "" {
|
if line == "" {
|
||||||
// Blank line means terminate operation.
|
// Blank line means terminate operation.
|
||||||
device.handlePostConfig(&tempASecCfg)
|
err := device.handlePostConfig(&tempASecCfg)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
peer.handlePostConfig()
|
peer.handlePostConfig()
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -227,7 +230,10 @@ func (device *Device) IpcSetOperation(r io.Reader) (err error) {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
device.handlePostConfig(&tempASecCfg)
|
err = device.handlePostConfig(&tempASecCfg)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
peer.handlePostConfig()
|
peer.handlePostConfig()
|
||||||
|
|
||||||
if err := scanner.Err(); err != nil {
|
if err := scanner.Err(); err != nil {
|
||||||
|
|
Loading…
Add table
Reference in a new issue