@@ -488,6 +488,35 @@ var errStopExecution = errors.New("stop execution due to unresolved variables")
488488
489489// executeRequest executes the actual generated request and returns error if occurred
490490func (request * Request ) executeRequest (input * contextargs.Context , generatedRequest * generatedRequest , previousEvent output.InternalEvent , hasInteractMatchers bool , callback protocols.OutputEventCallback , requestCount int ) error {
491+ outputEvent := output.InternalEvent {}
492+ var event * output.InternalWrappedEvent
493+ // event should never be nil as per existing logic
494+ defer func () {
495+ if event == nil {
496+ event := & output.InternalWrappedEvent {
497+ InternalEvent : map [string ]interface {}{
498+ "template-id" : request .options .TemplateID ,
499+ "host" : input .MetaInput .Input ,
500+ },
501+ }
502+ if request .CompiledOperators != nil && request .CompiledOperators .HasDSL () {
503+ event .InternalEvent = outputEvent
504+ }
505+ callback (event )
506+ return
507+ }
508+ if event .InternalEvent == nil {
509+ event .InternalEvent = outputEvent
510+ }
511+ // make sure templateId is never nil
512+ if event .InternalEvent ["template-id" ] == nil {
513+ event .InternalEvent ["template-id" ] = request .options .TemplateID
514+ }
515+ if event .InternalEvent ["host" ] == nil {
516+ event .InternalEvent ["host" ] = input .MetaInput .Input
517+ }
518+ }()
519+
491520 request .setCustomHeaders (generatedRequest )
492521
493522 // Try to evaluate any payloads before replacement
@@ -688,7 +717,7 @@ func (request *Request) executeRequest(input *contextargs.Context, generatedRequ
688717 // In case of interactsh markers and request times out, still send
689718 // a callback event so in case we receive an interaction, correlation is possible.
690719 // Also, to log failed use-cases.
691- outputEvent : = request .responseToDSLMap (& http.Response {}, input .MetaInput .Input , formedURL , convUtil .String (dumpedRequest ), "" , "" , "" , 0 , generatedRequest .meta )
720+ outputEvent = request .responseToDSLMap (& http.Response {}, input .MetaInput .Input , formedURL , convUtil .String (dumpedRequest ), "" , "" , "" , 0 , generatedRequest .meta )
692721 if i := strings .LastIndex (hostname , ":" ); i != - 1 {
693722 hostname = hostname [:i ]
694723 }
@@ -698,12 +727,6 @@ func (request *Request) executeRequest(input *contextargs.Context, generatedRequ
698727 } else {
699728 outputEvent ["ip" ] = httpclientpool .Dialer .GetDialedIP (hostname )
700729 }
701-
702- event := & output.InternalWrappedEvent {}
703- if request .CompiledOperators != nil && request .CompiledOperators .HasDSL () {
704- event .InternalEvent = outputEvent
705- }
706- callback (event )
707730 return err
708731 }
709732
@@ -775,7 +798,7 @@ func (request *Request) executeRequest(input *contextargs.Context, generatedRequ
775798 }
776799 finalEvent := make (output.InternalEvent )
777800
778- outputEvent : = request .responseToDSLMap (respChain .Response (), input .MetaInput .Input , matchedURL , convUtil .String (dumpedRequest ), respChain .FullResponse ().String (), respChain .Body ().String (), respChain .Headers ().String (), duration , generatedRequest .meta )
801+ outputEvent = request .responseToDSLMap (respChain .Response (), input .MetaInput .Input , matchedURL , convUtil .String (dumpedRequest ), respChain .FullResponse ().String (), respChain .Body ().String (), respChain .Headers ().String (), duration , generatedRequest .meta )
779802 // add response fields to template context and merge templatectx variables to output event
780803 request .options .AddTemplateVars (input .MetaInput , request .Type (), request .ID , outputEvent )
781804 if request .options .HasTemplateCtx (input .MetaInput ) {
@@ -813,7 +836,7 @@ func (request *Request) executeRequest(input *contextargs.Context, generatedRequ
813836 // prune signature internal values if any
814837 request .pruneSignatureInternalValues (generatedRequest .meta )
815838
816- event : = eventcreator .CreateEventWithAdditionalOptions (request , generators .MergeMaps (generatedRequest .dynamicValues , finalEvent ), request .options .Options .Debug || request .options .Options .DebugResponse , func (internalWrappedEvent * output.InternalWrappedEvent ) {
839+ event = eventcreator .CreateEventWithAdditionalOptions (request , generators .MergeMaps (generatedRequest .dynamicValues , finalEvent ), request .options .Options .Debug || request .options .Options .DebugResponse , func (internalWrappedEvent * output.InternalWrappedEvent ) {
817840 internalWrappedEvent .OperatorsResult .PayloadValues = generatedRequest .meta
818841 })
819842 if hasInteractMatchers {
0 commit comments