From 122824a74ac4329063d311b5bfc77c5328d5222b Mon Sep 17 00:00:00 2001 From: Michel Wohlert Date: Thu, 22 Apr 2021 00:12:19 -0700 Subject: [PATCH] Add EAGAIN and EINTR handling in hci mainloop --- linux/hci.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/linux/hci.go b/linux/hci.go index 39a834d..6994efe 100644 --- a/linux/hci.go +++ b/linux/hci.go @@ -9,6 +9,7 @@ import ( "github.com/bettercap/gatt/linux/cmd" "github.com/bettercap/gatt/linux/evt" "github.com/bettercap/gatt/linux/util" + "golang.org/x/sys/unix" ) type HCI struct { @@ -192,6 +193,10 @@ func (h *HCI) mainLoop() { // log.Printf("hci.mainLoop Read(%d)", len(b)) n, err := h.d.Read(b) if err != nil { + if err == unix.EAGAIN || err == unix.EINTR { + // We should just try again since partial or no data was available + continue + } log.Printf("mainloop err: %v", err) return }