Skip to content

Commit 62f23c6

Browse files
authored
fix: unset content length in rest-json when payload is undefined (#4219)
1 parent 2728d90 commit 62f23c6

File tree

4 files changed

+27
-2
lines changed

4 files changed

+27
-2
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"type": "bugfix",
3+
"category": "rest-json",
4+
"description": "unset content length in rest-json when payload is undefined"
5+
}

lib/event_listeners.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -678,6 +678,7 @@ AWS.EventListeners = {
678678
add('BUILD', 'build', svc.buildRequest);
679679
add('EXTRACT_DATA', 'extractData', svc.extractData);
680680
add('EXTRACT_ERROR', 'extractError', svc.extractError);
681+
add('UNSET_CONTENT_LENGTH', 'afterBuild', svc.unsetContentLength);
681682
}),
682683

683684
RestXml: new SequentialExecutor().addNamedListeners(function(add) {

lib/protocol/rest_json.js

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,18 @@ var Json = require('./json');
44
var JsonBuilder = require('../json/builder');
55
var JsonParser = require('../json/parser');
66

7+
var METHODS_WITHOUT_BODY = ['GET', 'HEAD', 'DELETE'];
8+
9+
function unsetContentLength(req) {
10+
var payloadMember = util.getRequestPayloadShape(req);
11+
if (
12+
payloadMember === undefined &&
13+
METHODS_WITHOUT_BODY.indexOf(req.httpRequest.method) >= 0
14+
) {
15+
delete req.httpRequest.headers['Content-Length'];
16+
}
17+
}
18+
719
function populateBody(req) {
820
var builder = new JsonBuilder();
921
var input = req.service.api.operations[req.operation].input;
@@ -40,7 +52,7 @@ function buildRequest(req) {
4052
Rest.buildRequest(req);
4153

4254
// never send body payload on GET/HEAD/DELETE
43-
if (['GET', 'HEAD', 'DELETE'].indexOf(req.httpRequest.method) < 0) {
55+
if (METHODS_WITHOUT_BODY.indexOf(req.httpRequest.method) < 0) {
4456
populateBody(req);
4557
}
4658
}
@@ -89,5 +101,6 @@ function extractData(resp) {
89101
module.exports = {
90102
buildRequest: buildRequest,
91103
extractError: extractError,
92-
extractData: extractData
104+
extractData: extractData,
105+
unsetContentLength: unsetContentLength
93106
};

test/protocol/protocol.spec.js

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)