diff --git a/src/handlebar/ProxyHelper.ts b/src/handlebar/ProxyHelper.ts index 1499f4b..dd1200c 100644 --- a/src/handlebar/ProxyHelper.ts +++ b/src/handlebar/ProxyHelper.ts @@ -18,10 +18,10 @@ export class ProxyHelper { register = () => { this.Handlebars.registerHelper("proxy", (context: any) => { const options = JSON.parse(context.fn(this)); - if (options.ssl.key && fs.existsSync(path.resolve(options.ssl.key))) { + if (options.ssl && options.ssl.key && fs.existsSync(path.resolve(options.ssl.key))) { options.ssl.key = fs.readFileSync(path.resolve(options.ssl.key)) } - if (options.ssl.cert && fs.existsSync(path.resolve(options.ssl.cert))) { + if (options.ssl && options.ssl.cert && fs.existsSync(path.resolve(options.ssl.cert))) { options.ssl.cert = fs.readFileSync(path.resolve(options.ssl.cert)) } if (options.target.pfx && fs.existsSync(path.resolve(options.target.pfx))) { diff --git a/src/parser/HttpParser.ts b/src/parser/HttpParser.ts index 113d3b8..d7da58e 100644 --- a/src/parser/HttpParser.ts +++ b/src/parser/HttpParser.ts @@ -211,6 +211,11 @@ export class HttpParser { const proxyResponse: ProxyResponse = JSON.parse(responseBody); /* eslint-disable no-case-declarations */ proxy.web(this.req, this.res, proxyResponse.options); + // Wait for proxy response + await new Promise((resolve, reject) => { + proxy.on("proxyRes", resolve) + proxy.on("error", reject) + }) break; case "fault": const faultType = codeResponse["FaultType"]; @@ -261,6 +266,7 @@ export class HttpParser { logger: logger, })}` ); + response.status = 500; response.body = await template({ request: this.req, logger: logger,