Add DMRelaysList.K to kind.go and improve error messages with remote address in connection.go

- Added `DMRelaysList.K` constant to `pkg/encoders/kind/kind.go`
- Removed unused `"errors"` import from `pkg/protocol/ws/connection.go`
- Updated error messages in `WriteMessage`, `ReadMessage`, and related functions in `pkg/protocol/ws/connection.go` to include the remote address for better debugging
- Changed error handling from `chk.E(err)` to `chk.T(err)` in `pkg/encoders/envelopes/eventenvelope/eventenvelope.go`
- Updated ticker interval from 30 minutes to 1 hour in `pkg/app/relay/server.go`
This commit is contained in:
2025-07-20 22:03:30 +01:00
parent 56ab6eaa81
commit 4bbbbb1bb6
4 changed files with 56 additions and 14 deletions

View File

@@ -191,7 +191,7 @@ func (s *Server) Start(
}
}
// start up a spider run to trigger every 30 minutes
ticker := time.NewTicker(30 * time.Minute)
ticker := time.NewTicker(time.Hour)
go func() {
for {
select {

View File

@@ -158,7 +158,7 @@ func (en *Result) Unmarshal(b []byte) (r []byte, err error) {
// envelope into it.
func ParseResult(b []byte) (t *Result, rem []byte, err error) {
t = NewResult()
if rem, err = t.Unmarshal(b); chk.E(err) {
if rem, err = t.Unmarshal(b); chk.T(err) {
return
}
return

View File

@@ -378,6 +378,7 @@ var Map = map[uint16]string{
SearchRelaysList.K: "SearchRelaysList",
InterestsList.K: "InterestsList",
UserEmojiList.K: "UserEmojiList",
DMRelaysList.K: "DMRelaysList",
FileStorageServerList.K: "FileStorageServerList",
NWCWalletInfo.K: "NWCWalletInfo",
LightningPubRPC.K: "LightningPubRPC",

View File

@@ -4,7 +4,6 @@ import (
"bytes"
"compress/flate"
"crypto/tls"
"errors"
"github.com/gobwas/httphead"
"github.com/gobwas/ws"
"github.com/gobwas/ws/wsflate"
@@ -113,7 +112,10 @@ func NewConnection(
func (cn *Connection) WriteMessage(c context.T, data []byte) (err error) {
select {
case <-c.Done():
return errors.New("context canceled")
return errorf.E(
"%s context canceled",
cn.conn.RemoteAddr(),
)
default:
}
if cn.msgStateW.IsCompressed() && cn.enableCompression {
@@ -121,19 +123,35 @@ func (cn *Connection) WriteMessage(c context.T, data []byte) (err error) {
if _, err := io.Copy(
cn.flateWriter, bytes.NewReader(data),
); chk.T(err) {
return errorf.E("failed to write message: %w", err)
return errorf.E(
"%s failed to write message: %w",
cn.conn.RemoteAddr(),
err,
)
}
if err := cn.flateWriter.Close(); chk.T(err) {
return errorf.E("failed to close flate writer: %w", err)
return errorf.E(
"%s failed to close flate writer: %w",
cn.conn.RemoteAddr(),
err,
)
}
} else {
if _, err := io.Copy(cn.writer, bytes.NewReader(data)); chk.T(err) {
return errorf.E("failed to write message: %w", err)
return errorf.E(
"%s failed to write message: %w",
cn.conn.RemoteAddr(),
err,
)
}
}
if err := cn.writer.Flush(); chk.T(err) {
return errorf.E("failed to flush writer: %w", err)
return errorf.E(
"%s failed to flush writer: %w",
cn.conn.RemoteAddr(),
err,
)
}
return nil
}
@@ -143,34 +161,57 @@ func (cn *Connection) ReadMessage(c context.T, buf io.Writer) (err error) {
for {
select {
case <-c.Done():
return errors.New("context canceled")
return errorf.D(
"%s context canceled",
cn.conn.RemoteAddr(),
)
default:
}
h, err := cn.reader.NextFrame()
if err != nil {
cn.conn.Close()
return errorf.E("failed to advance frame: %w", err)
return errorf.E(
"%s failed to advance frame: %s",
cn.conn.RemoteAddr(),
err.Error(),
)
}
if h.OpCode.IsControl() {
if err := cn.controlHandler(h, cn.reader); chk.T(err) {
return errorf.E("failed to handle control frame: %w", err)
return errorf.E(
"%s failed to handle control frame: %w",
cn.conn.RemoteAddr(),
err,
)
}
} else if h.OpCode == ws.OpBinary ||
h.OpCode == ws.OpText {
break
}
if err := cn.reader.Discard(); chk.T(err) {
return errorf.E("failed to discard: %w", err)
return errorf.E(
"%s failed to discard: %w",
cn.conn.RemoteAddr(),
err,
)
}
}
if cn.msgStateR.IsCompressed() && cn.enableCompression {
cn.flateReader.Reset(cn.reader)
if _, err := io.Copy(buf, cn.flateReader); chk.T(err) {
return errorf.E("failed to read message: %w", err)
return errorf.E(
"%s failed to read message: %w",
cn.conn.RemoteAddr(),
err,
)
}
} else {
if _, err := io.Copy(buf, cn.reader); chk.T(err) {
return errorf.E("failed to read message: %w", err)
return errorf.E(
"%s failed to read message: %w",
cn.conn.RemoteAddr(),
err,
)
}
}
return nil