Skip to content

Commit 7852609

Browse files
committed
handle overflow + close errors
1 parent 66bdae0 commit 7852609

File tree

1 file changed

+16
-3
lines changed

1 file changed

+16
-3
lines changed

dbos/conductor.go

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,10 @@ type Conductor struct {
5151
// closeConn closes the connection and signals that reconnection is needed
5252
func (c *Conductor) closeConn() {
5353
if c.conn != nil {
54-
c.conn.Close()
54+
err := c.conn.Close()
55+
if err != nil {
56+
c.logger.Warn("Failed to close connection", "error", err)
57+
}
5558
c.conn = nil
5659
}
5760
// Signal that we need to reconnect
@@ -146,7 +149,10 @@ func (c *Conductor) run() {
146149
case <-c.dbosCtx.Done():
147150
c.logger.Info("DBOS context done, stopping conductor", "cause", context.Cause(c.dbosCtx))
148151
if c.conn != nil {
149-
c.conn.WriteMessage(websocket.CloseMessage, websocket.FormatCloseMessage(websocket.CloseNormalClosure, "shutting down"))
152+
err := c.conn.WriteMessage(websocket.CloseMessage, websocket.FormatCloseMessage(websocket.CloseNormalClosure, "shutting down"))
153+
if err != nil {
154+
c.logger.Warn("Failed to send close message", "error", err)
155+
}
150156
c.closeConn()
151157
}
152158
return
@@ -224,7 +230,10 @@ func (c *Conductor) connect() error {
224230

225231
// Set initial read deadline
226232
if err := conn.SetReadDeadline(time.Now().Add(c.pingTimeout)); err != nil {
227-
conn.Close()
233+
cErr := conn.Close()
234+
if cErr != nil {
235+
c.logger.Warn("Failed to close connection", "error", cErr)
236+
}
228237
return fmt.Errorf("failed to set read deadline: %w", err)
229238
}
230239

@@ -827,6 +836,10 @@ func (c *Conductor) handleForkWorkflowRequest(data []byte, requestID string) err
827836
c.logger.Debug("Handling fork workflow request", "request", req)
828837

829838
// Build ForkWorkflowInput from the request
839+
// Validate StartStep to prevent integer overflow
840+
if req.Body.StartStep < 0 {
841+
return fmt.Errorf("invalid StartStep: cannot be negative")
842+
}
830843
input := ForkWorkflowInput{
831844
OriginalWorkflowID: req.Body.WorkflowID,
832845
StartStep: uint(req.Body.StartStep),

0 commit comments

Comments
 (0)