device: simplify IpcHandle error handling

Unify the handling of unexpected UAPI errors.
The comment that says "should never happen" is incorrect;
this could happen due to I/O errors. Correct it.

Change error message capitalization for consistency.

Signed-off-by: Josh Bleecher Snyder <josh@tailscale.com>
This commit is contained in:
Josh Bleecher Snyder 2021-01-25 08:55:08 -08:00
parent 6252de0db9
commit 37a239e736

View File

@ -411,31 +411,22 @@ func (device *Device) IpcHandle(socket net.Conn) {
}
// handle operation
var status *IPCError
switch op {
case "set=1\n":
err = device.IpcSetOperation(buffered.Reader)
if err != nil && !errors.As(err, &status) {
// should never happen
status = ipcErrorf(1, "invalid UAPI error: %w", err)
}
case "get=1\n":
err = device.IpcGetOperation(buffered.Writer)
if err != nil && !errors.As(err, &status) {
// should never happen
status = ipcErrorf(1, "invalid UAPI error: %w", err)
}
default:
device.log.Error.Println("Invalid UAPI operation:", op)
device.log.Error.Println("invalid UAPI operation:", op)
return
}
// write status
var status *IPCError
if err != nil && !errors.As(err, &status) {
// I/O error, maybe something unexpected
status = ipcErrorf(1, "other UAPI error: %w", err)
}
if status != nil {
device.log.Error.Println(status)
fmt.Fprintf(buffered, "errno=%d\n\n", status.ErrorCode())