|
5 | 5 | "encoding/json" |
6 | 6 | "fmt" |
7 | 7 | "log/slog" |
| 8 | + "math" |
8 | 9 | "net" |
9 | 10 | "net/url" |
10 | 11 | "os" |
@@ -141,7 +142,9 @@ func (c *Conductor) closeConn() { |
141 | 142 | } |
142 | 143 |
|
143 | 144 | if c.conn != nil { |
144 | | - c.conn.SetWriteDeadline(time.Now().Add(5 * time.Second)) // Make sure the write doesn't block |
| 145 | + if err := c.conn.SetWriteDeadline(time.Now().Add(5 * time.Second)); err != nil { |
| 146 | + c.logger.Warn("Failed to set write deadline", "error", err) |
| 147 | + } |
145 | 148 | err := c.conn.WriteMessage(websocket.CloseMessage, websocket.FormatCloseMessage(websocket.CloseNormalClosure, "shutting down")) |
146 | 149 | if err != nil { |
147 | 150 | c.logger.Warn("Failed to send close message", "error", err) |
@@ -299,11 +302,15 @@ func (c *Conductor) ping() error { |
299 | 302 | c.writeMu.Lock() |
300 | 303 | defer c.writeMu.Unlock() |
301 | 304 |
|
302 | | - c.conn.SetWriteDeadline(time.Now().Add(5 * time.Second)) // Make sure the write doesn't block |
| 305 | + if err := c.conn.SetWriteDeadline(time.Now().Add(5 * time.Second)); err != nil { |
| 306 | + c.logger.Warn("Failed to set write deadline for ping", "error", err) |
| 307 | + } |
303 | 308 | if err := c.conn.WriteMessage(websocket.PingMessage, nil); err != nil { |
304 | 309 | return fmt.Errorf("failed to send ping: %w", err) |
305 | 310 | } |
306 | | - c.conn.SetWriteDeadline(time.Time{}) // Clear the write deadline |
| 311 | + if err := c.conn.SetWriteDeadline(time.Time{}); err != nil { |
| 312 | + c.logger.Warn("Failed to clear write deadline", "error", err) |
| 313 | + } |
307 | 314 |
|
308 | 315 | return nil |
309 | 316 | } |
@@ -571,12 +578,16 @@ func (c *Conductor) sendResponse(response any, responseType string) error { |
571 | 578 | c.writeMu.Lock() |
572 | 579 | defer c.writeMu.Unlock() |
573 | 580 |
|
574 | | - c.conn.SetWriteDeadline(time.Now().Add(5 * time.Second)) // Make sure the write doesn't block |
| 581 | + if err := c.conn.SetWriteDeadline(time.Now().Add(5 * time.Second)); err != nil { |
| 582 | + c.logger.Warn("Failed to set write deadline", "type", responseType, "error", err) |
| 583 | + } |
575 | 584 | if err := c.conn.WriteMessage(websocket.TextMessage, data); err != nil { |
576 | 585 | c.logger.Error("Failed to send response", "type", responseType, "error", err) |
577 | 586 | return fmt.Errorf("failed to send message: %w", err) |
578 | 587 | } |
579 | | - c.conn.SetWriteDeadline(time.Time{}) // Clear the write deadline |
| 588 | + if err := c.conn.SetWriteDeadline(time.Time{}); err != nil { |
| 589 | + c.logger.Warn("Failed to clear write deadline", "type", responseType, "error", err) |
| 590 | + } |
580 | 591 |
|
581 | 592 | return nil |
582 | 593 | } |
@@ -972,12 +983,16 @@ func (c *Conductor) handleUnknownMessageType(requestID string, msgType messageTy |
972 | 983 | c.writeMu.Lock() |
973 | 984 | defer c.writeMu.Unlock() |
974 | 985 |
|
975 | | - c.conn.SetWriteDeadline(time.Now().Add(5 * time.Second)) // Make sure the write doesn't block |
| 986 | + if err := c.conn.SetWriteDeadline(time.Now().Add(5 * time.Second)); err != nil { |
| 987 | + c.logger.Warn("Failed to set write deadline for error response", "error", err) |
| 988 | + } |
976 | 989 | if err := c.conn.WriteMessage(websocket.TextMessage, data); err != nil { |
977 | 990 | c.logger.Error("Failed to send error response", "error", err) |
978 | 991 | return fmt.Errorf("failed to send message: %w", err) |
979 | 992 | } |
980 | | - c.conn.SetWriteDeadline(time.Time{}) // Clear the write deadline |
| 993 | + if err := c.conn.SetWriteDeadline(time.Time{}); err != nil { |
| 994 | + c.logger.Warn("Failed to clear write deadline for error response", "error", err) |
| 995 | + } |
981 | 996 |
|
982 | 997 | return nil |
983 | 998 | } |
0 commit comments