@@ -116,6 +116,7 @@ export class CSIController extends TypedEmitter<Events> {
116116    apiInputEnabled  =  true ; 
117117
118118    executionTime : number  =  - 1 ; 
119+     inputHeadersSent  =  false ; 
119120
120121    /** 
121122     * Topic to which the output stream should be routed 
@@ -222,7 +223,8 @@ export class CSIController extends TypedEmitter<Events> {
222223            this . logger . info ( "Instance status: errored" ,  e ) ; 
223224
224225            this . status  ||=  InstanceStatus . ERRORED ; 
225-             this . executionTime  =  ( Date . now ( )  -  this . info . created ! . getTime ( ) )  /  1000 ; 
226+ 
227+             this . executionTime  =  this . info . created  ? ( Date . now ( )  -  this . info . created ! . getTime ( ) )  /  1000  : - 1 ; 
226228
227229            this . setExitInfo ( e . exitcode ,  e . message ) ; 
228230
@@ -403,9 +405,10 @@ export class CSIController extends TypedEmitter<Events> {
403405            . pipe ( this . upStreams [ CC . CONTROL ] ) ; 
404406
405407        this . communicationHandler . addMonitoringHandler ( RunnerMessageCode . PING ,  async  ( message )  =>  { 
406-             const  {  status,  payload }  =  message [ 1 ] ; 
408+             const  {  status,  payload,  inputHeadersSent  }  =  message [ 1 ] ; 
407409
408410            this . status  =  status  ||  InstanceStatus . RUNNING ; 
411+             this . inputHeadersSent  =  inputHeadersSent ; 
409412
410413            if  ( ! payload )  { 
411414                this . emit ( "error" ,  "No payload in ping!" ) ; 
@@ -485,6 +488,10 @@ export class CSIController extends TypedEmitter<Events> {
485488            this . logger . trace ( "Received a PING message with ports config" ) ; 
486489        } 
487490
491+         this . inputHeadersSent  =  ! ! message [ 1 ] . inputHeadersSent ; 
492+ 
493+         this . logger . info ( "Headers already sent for input?" ,  this . inputHeadersSent ) ; 
494+ 
488495        if  ( this . instanceAdapter . setRunner )  { 
489496            await  this . instanceAdapter . setRunner ( { 
490497                ...message [ 1 ] . payload . system , 
@@ -537,8 +544,6 @@ export class CSIController extends TypedEmitter<Events> {
537544    } 
538545
539546    createInstanceAPIRouter ( )  { 
540-         let  inputHeadersSent  =  false ; 
541- 
542547        if  ( ! this . upStreams )  { 
543548            throw  new  AppError ( "UNATTACHED_STREAMS" ) ; 
544549        } 
@@ -551,11 +556,11 @@ export class CSIController extends TypedEmitter<Events> {
551556         * @experimental  
552557         */ 
553558        this . router . duplex ( "/inout" ,  ( duplex ,  _headers )  =>  { 
554-             if  ( ! inputHeadersSent )  { 
559+             if  ( ! this . inputHeadersSent )  { 
555560                this . downStreams ! [ CC . IN ] . write ( `Content-Type: ${ _headers [ "content-type" ] }  \r\n` ) ; 
556561                this . downStreams ! [ CC . IN ] . write ( "\r\n" ) ; 
557562
558-                 inputHeadersSent  =  true ; 
563+                 this . inputHeadersSent  =  true ; 
559564            } 
560565
561566            ( duplex  as  unknown  as  DuplexStream ) . input . pipe ( this . downStreams ! [ CC . IN ] ,  {  end : false  } ) ; 
@@ -597,15 +602,15 @@ export class CSIController extends TypedEmitter<Events> {
597602                const  contentType  =  req . headers [ "content-type" ] ; 
598603
599604                // @TODO : Check if subsequent requests have the same content-type. 
600-                 if  ( ! inputHeadersSent )  { 
605+                 if  ( ! this . inputHeadersSent )  { 
601606                    if  ( contentType  ===  undefined )  { 
602607                        return  {  opStatus : ReasonPhrases . NOT_ACCEPTABLE ,  error : "Content-Type must be defined"  } ; 
603608                    } 
604609
605610                    stream . write ( `Content-Type: ${ contentType }  \r\n` ) ; 
606611                    stream . write ( "\r\n" ) ; 
607612
608-                     inputHeadersSent  =  true ; 
613+                     this . inputHeadersSent  =  true ; 
609614                } 
610615
611616                return  stream ; 
0 commit comments