From 3dff07107a7a3793d168d329f4b31d3632e8ac23 Mon Sep 17 00:00:00 2001 From: gavinshark Date: Mon, 22 Jun 2020 19:53:49 +0800 Subject: [PATCH] bugfix:fix the bug that middleware will return illegal http body when http body is empty (#737) If the http body is empty. The httpBody function will return HTTP header content from index 3. This is unexpected. Function caller also cannot tell whether the httpbody is empty or not. --- middleware/middleware.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/middleware/middleware.js b/middleware/middleware.js index 6c75323..f37ce42 100755 --- a/middleware/middleware.js +++ b/middleware/middleware.js @@ -335,7 +335,12 @@ function deleteHttpHeader(payload, name) { } function httpBody(payload) { - return payload.slice(payload.indexOf("\r\n\r\n") + 4, payload.length); + let bodyIndex = payload.indexOf("\r\n\r\n"); + if (-1 != bodyIndex){ + return payload.slice(bodyIndex + 4, payload.length); + } else { + return null; + } } function setHttpBody(payload, newBody) { @@ -710,6 +715,12 @@ function TEST_httpBody() { if (body != "hello") { fail(`'${body}' != 'hello'`) } + + const exampleInvalidPayload = "Invalid HTTP Response by Network issue"; + let invalidBody = httpBody(Buffer.from(exampleInvalidPayload)); + if (invalidBody != null) { + fail(`'${invalidBody}' != 'null'`) + } } function TEST_setHttpBody() {