@@ -51,7 +51,10 @@ type Conductor struct {
5151// closeConn closes the connection and signals that reconnection is needed
5252func (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