diff options
author | David Anderson <danderson@tailscale.com> | 2020-04-01 09:27:02 -0700 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2020-05-02 01:49:47 -0600 |
commit | f2c6faad44fa70cdc8ef80385ca9826bbf0468d9 (patch) | |
tree | 522a3dc9a2086c3c3e867dc84755019a62b7ac44 /device/uapi.go | |
parent | c76b8184663e4b80ff8c26aafe9ec0ec91ff9116 (diff) |
device: return generic error from Ipc{Get,Set}Operation.
This makes uapi.go's public API conform to Go style in terms
of error types.
Signed-off-by: David Anderson <danderson@tailscale.com>
Diffstat (limited to 'device/uapi.go')
-rw-r--r-- | device/uapi.go | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/device/uapi.go b/device/uapi.go index 6cdccd6..1080ca1 100644 --- a/device/uapi.go +++ b/device/uapi.go @@ -7,6 +7,7 @@ package device import ( "bufio" + "errors" "fmt" "io" "net" @@ -31,7 +32,7 @@ func (s IPCError) ErrorCode() int64 { return s.int64 } -func (device *Device) IpcGetOperation(socket *bufio.Writer) *IPCError { +func (device *Device) IpcGetOperation(socket *bufio.Writer) error { lines := make([]string, 0, 100) send := func(line string) { lines = append(lines, line) @@ -106,7 +107,7 @@ func (device *Device) IpcGetOperation(socket *bufio.Writer) *IPCError { return nil } -func (device *Device) IpcSetOperation(socket *bufio.Reader) *IPCError { +func (device *Device) IpcSetOperation(socket *bufio.Reader) error { scanner := bufio.NewScanner(socket) logError := device.log.Error logDebug := device.log.Debug @@ -421,10 +422,20 @@ func (device *Device) IpcHandle(socket net.Conn) { switch op { case "set=1\n": - status = device.IpcSetOperation(buffered.Reader) + err = device.IpcSetOperation(buffered.Reader) + if err != nil && !errors.As(err, &status) { + // should never happen + device.log.Error.Println("Invalid UAPI error:", err) + status = &IPCError{1} + } case "get=1\n": - status = device.IpcGetOperation(buffered.Writer) + err = device.IpcGetOperation(buffered.Writer) + if err != nil && !errors.As(err, &status) { + // should never happen + device.log.Error.Println("Invalid UAPI error:", err) + status = &IPCError{1} + } default: device.log.Error.Println("Invalid UAPI operation:", op) |