Fix msg delivery timeouts

This commit is contained in:
Zoltán Papp
2024-06-26 16:22:26 +02:00
parent f0eb004582
commit c0efce6556
7 changed files with 40 additions and 36 deletions

View File

@@ -13,6 +13,10 @@ import (
"nhooyr.io/websocket"
)
const (
writeTimeout = 10 * time.Second
)
type Conn struct {
*websocket.Conn
lAddr *net.TCPAddr
@@ -50,8 +54,14 @@ func (c *Conn) Read(b []byte) (n int, err error) {
return n, err
}
// Write writes a binary message with the given payload.
// It does not block until fill the internal buffer.
// If the buffer filled up, wait until the buffer is drained or timeout.
func (c *Conn) Write(b []byte) (int, error) {
err := c.Conn.Write(c.ctx, websocket.MessageBinary, b)
ctx, ctxCancel := context.WithTimeout(c.ctx, writeTimeout)
defer ctxCancel()
err := c.Conn.Write(ctx, websocket.MessageBinary, b)
return len(b), err
}

View File

@@ -29,7 +29,6 @@ func NewListener(address string) listener.Listener {
}
}
// Listen todo: prevent multiple call
func (l *Listener) Listen(acceptFn func(conn net.Conn)) error {
l.acceptFn = acceptFn
mux := http.NewServeMux()

View File

@@ -16,8 +16,7 @@ import (
)
const (
bufferSize = 8820
maxHandshakeSize = 90
bufferSize = 8820
)
type Server struct {
@@ -135,7 +134,6 @@ func (r *Server) accept(conn net.Conn) {
peer.Log.Errorf("failed to update transport message: %s", err)
continue
}
peer.Log.Infof("write transport msg!!!!")
_, err = dp.conn.Write(msg)
if err != nil {
peer.Log.Errorf("failed to write transport message to: %s", dp.String())
@@ -168,7 +166,7 @@ func (r *Server) sendCloseMsgs() {
}
func handShake(conn net.Conn) (*Peer, error) {
buf := make([]byte, maxHandshakeSize)
buf := make([]byte, messages.MaxHandshakeSize)
n, err := conn.Read(buf)
if err != nil {
log.Errorf("failed to read message: %s", err)