return websocket error to client instead of logging it

This commit is contained in:
pragmaxim
2026-02-17 19:08:42 +01:00
parent ad7dd783e6
commit 61523804a7
2 changed files with 34 additions and 2 deletions

View File

@@ -919,13 +919,13 @@ func (s *WebsocketServer) unmarshalAddresses(params []byte) ([]string, bool, err
r := WsSubscribeAddressesReq{}
err := json.Unmarshal(params, &r)
if err != nil {
return nil, false, err
return nil, false, api.NewAPIError("Invalid subscribeAddresses params", true)
}
rv := make([]string, len(r.Addresses))
for i, a := range r.Addresses {
ad, err := s.chainParser.GetAddrDescFromAddress(a)
if err != nil {
return nil, false, err
return nil, false, api.NewAPIError("Invalid address "+strconv.Quote(a)+", "+err.Error(), true)
}
rv[i] = string(ad)
}

View File

@@ -0,0 +1,32 @@
//go:build unittest
package server
import (
"strings"
"testing"
"github.com/trezor/blockbook/api"
"github.com/trezor/blockbook/bchain/coins/eth"
)
func TestUnmarshalAddressesReturnsPublicAPIError(t *testing.T) {
s := &WebsocketServer{
chainParser: eth.NewEthereumParser(0, false),
}
_, _, err := s.unmarshalAddresses([]byte(`{"addresses":[""]}`))
if err == nil {
t.Fatal("expected error")
}
apiErr, ok := err.(*api.APIError)
if !ok {
t.Fatalf("expected *api.APIError, got %T", err)
}
if !apiErr.Public {
t.Fatal("expected public api error")
}
if !strings.Contains(apiErr.Error(), "Address missing") {
t.Fatalf("unexpected error message %q", apiErr.Error())
}
}