diff options
| author | Paul Buetow <paul@buetow.org> | 2026-04-14 11:08:15 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-04-14 11:08:15 +0300 |
| commit | f143b6daca50eba520ceaec51c36222ab6ae667d (patch) | |
| tree | 18cc8299b0e87fd8e633334abf74f57fd77f2a44 /internal | |
| parent | 9d32b8138baf821d72eb1f5a7a218f9b1949c853 (diff) | |
fix(r3): use errors.Is for sentinel error comparisons
Replace direct == checks with errors.Is so wrapped errors are handled
correctly (authkeys Verify, daemon server/EOF, Magefile uninstall).
Refs: ask r3, 100 Go Mistakes #51
Made-with: Cursor
Diffstat (limited to 'internal')
| -rw-r--r-- | internal/authkeys/store.go | 3 | ||||
| -rw-r--r-- | internal/daemon/daemon.go | 9 |
2 files changed, 7 insertions, 5 deletions
diff --git a/internal/authkeys/store.go b/internal/authkeys/store.go index 7848ef8..a8c21c4 100644 --- a/internal/authkeys/store.go +++ b/internal/authkeys/store.go @@ -7,6 +7,7 @@ import ( "crypto/subtle" "database/sql" "encoding/base64" + "errors" "fmt" "path/filepath" "time" @@ -102,7 +103,7 @@ func (s *Store) CreateKey(ctx context.Context, hostname string) (token string, e func (s *Store) Verify(ctx context.Context, hostname, token string) (bool, error) { var stored []byte err := s.db.QueryRowContext(ctx, "SELECT key_hash FROM client_key WHERE hostname = ?", hostname).Scan(&stored) - if err == sql.ErrNoRows { + if errors.Is(err, sql.ErrNoRows) { return false, nil } if err != nil { diff --git a/internal/daemon/daemon.go b/internal/daemon/daemon.go index b913c43..cad2812 100644 --- a/internal/daemon/daemon.go +++ b/internal/daemon/daemon.go @@ -3,6 +3,7 @@ package daemon import ( "bytes" "context" + "errors" "fmt" "io" "log" @@ -131,12 +132,12 @@ func Run(ctx context.Context, cfg Config) error { defer cancel() _ = srv.Shutdown(shutCtx) err := <-errCh - if err != nil && err != http.ErrServerClosed { + if err != nil && !errors.Is(err, http.ErrServerClosed) { return fmt.Errorf("shutdown: %w", err) } return ctx.Err() case err := <-errCh: - if err == http.ErrServerClosed { + if errors.Is(err, http.ErrServerClosed) { return nil } if err != nil { @@ -200,7 +201,7 @@ func checkReadinessDirs(statsDir, authDB string) error { func checkDirReadableWritable(dir string) error { fi, err := os.Stat(dir) if err != nil { - if os.IsNotExist(err) { + if errors.Is(err, os.ErrNotExist) { return fmt.Errorf("missing") } return err @@ -214,7 +215,7 @@ func checkDirReadableWritable(dir string) error { } _, err = f.Readdirnames(1) _ = f.Close() - if err != nil && err != io.EOF { + if err != nil && !errors.Is(err, io.EOF) { return fmt.Errorf("not readable: %w", err) } tmp, err := os.CreateTemp(dir, ".goprecords-ready-*") |
