@@ -28,10 +28,10 @@ import "C"
2828import (
2929 "bytes"
3030 "context"
31- "errors"
3231 "fmt"
3332 "io"
3433 "os"
34+ "sync/atomic"
3535 "unsafe"
3636)
3737
@@ -187,7 +187,7 @@ func (node CodexNode) UploadReader(ctx context.Context, options UploadOptions, r
187187 if cancelErr := node .UploadCancel (sessionId ); cancelErr != nil {
188188 return "" , fmt .Errorf ("upload canceled: %v, but failed to cancel upload session: %v" , ctx .Err (), cancelErr )
189189 }
190- return "" , errors . New ( "upload canceled" )
190+ return "" , context . Canceled
191191 default :
192192 // continue
193193 }
@@ -313,10 +313,12 @@ func (node CodexNode) UploadFile(ctx context.Context, options UploadOptions) (st
313313 defer close (done )
314314
315315 channelError := make (chan error , 1 )
316+ var cancelled atomic.Bool
316317 go func () {
317318 select {
318319 case <- ctx .Done ():
319320 channelError <- node .UploadCancel (sessionId )
321+ cancelled .Store (true )
320322 case <- done :
321323 // Nothing to do, upload finished
322324 }
@@ -333,8 +335,13 @@ func (node CodexNode) UploadFile(ctx context.Context, options UploadOptions) (st
333335
334336 if err != nil {
335337 if cancelErr != nil {
336- return "" , fmt .Errorf ("upload canceled: %v, but failed to cancel upload session: %v" , ctx .Err (), cancelErr )
338+ return "" , fmt .Errorf ("context canceled: %v, but failed to cancel upload session: %v" , ctx .Err (), cancelErr )
337339 }
340+
341+ if cancelled .Load () {
342+ return "" , context .Canceled
343+ }
344+
338345 return "" , err
339346 }
340347
0 commit comments