tangled
alpha
login
or
join now
willdot.net
/
message-broker
2
fork
atom
An experimental pub/sub client and server project.
2
fork
atom
overview
issues
pulls
pipelines
better error logging
willdot.net
2 years ago
933dd693
75e70380
+15
-4
1 changed file
expand all
collapse all
unified
split
server
server.go
+15
-4
server/server.go
···
5
5
"encoding/json"
6
6
"errors"
7
7
"fmt"
8
8
+
"io"
8
9
"log/slog"
9
10
"net"
10
11
"strings"
11
12
"sync"
13
13
+
"syscall"
12
14
"time"
13
15
14
16
"github.com/willdot/messagebroker/server/peer"
···
97
99
98
100
action, err := readAction(peer, 0)
99
101
if err != nil {
100
100
-
slog.Error("failed to read action from peer", "error", err, "peer", peer.Addr())
102
102
+
if !errors.Is(err, io.EOF) {
103
103
+
slog.Error("failed to read action from peer", "error", err, "peer", peer.Addr())
104
104
+
}
101
105
return
102
106
}
103
107
···
128
132
time.Sleep(time.Second)
129
133
continue
130
134
}
131
131
-
// TODO: see if there's a way to check if the peers connection has been ended etc
132
132
-
slog.Error("failed to read action from subscriber", "error", err, "peer", peer.Addr())
135
135
+
136
136
+
if !errors.Is(err, io.EOF) {
137
137
+
slog.Error("failed to read action from subscriber", "error", err, "peer", peer.Addr())
138
138
+
}
133
139
134
140
s.unsubscribePeerFromAllTopics(peer)
135
141
···
239
245
op := func(conn net.Conn) error {
240
246
dataLen, err := dataLength(conn)
241
247
if err != nil {
248
248
+
if errors.Is(err, io.EOF) {
249
249
+
return nil
250
250
+
}
242
251
slog.Error("failed to read data length", "error", err, "peer", peer.Addr())
243
252
writeStatus(Error, "invalid data length of data provided", conn)
244
253
return nil
···
409
418
func writeStatus(status Status, message string, conn net.Conn) {
410
419
err := binary.Write(conn, binary.BigEndian, status)
411
420
if err != nil {
412
412
-
slog.Error("failed to write status to peers connection", "error", err, "peer", conn.RemoteAddr())
421
421
+
if !errors.Is(err, syscall.EPIPE) {
422
422
+
slog.Error("failed to write status to peers connection", "error", err, "peer", conn.RemoteAddr())
423
423
+
}
413
424
return
414
425
}
415
426