GeezerVison is showing github.com — http: coerce content-length to number · nodejs/node@0583c3d
File tree
Expand file treeCollapse file tree
Open diff view settings
Expand file treeCollapse file tree
Open diff view settings
Collapse file
Copy file name to clipboardExpand all lines: lib/_http_outgoing.js +1-1Lines changed: 1 addition & 1 deletion | Original file line number | Diff line number | Diff line change |
|---|
@@ -650,7 +650,7 @@ function matchHeader(self, state, field, value) { |
650 | 650 | break; |
651 | 651 | case 'content-length': |
652 | 652 | state.contLen = true; |
653 | | - self._contentLength = value; |
| 653 | + self._contentLength = +value; |
654 | 654 | self._removedContLen = false; |
655 | 655 | break; |
656 | 656 | case 'date': |
|
Collapse file
Copy file name to clipboardExpand all lines: test/parallel/test-http-content-length-mismatch.js +20Lines changed: 20 additions & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -78,3 +78,23 @@ function shouldThrowOnFewerBytes() { |
78 | 78 | shouldThrowOnMoreBytes(); |
79 | 79 | shouldNotThrow(); |
80 | 80 | shouldThrowOnFewerBytes(); |
| 81 | + |
| 82 | + |
| 83 | +{ |
| 84 | + const server = http.createServer(common.mustCall((req, res) => { |
| 85 | + res.strictContentLength = true; |
| 86 | + // Pass content-length as string |
| 87 | + res.setHeader('content-length', '5'); |
| 88 | + res.end('12345'); |
| 89 | + })); |
| 90 | + |
| 91 | + |
| 92 | + server.listen(0, common.mustCall(() => { |
| 93 | + http.get({ port: server.address().port }, common.mustCall((res) => { |
| 94 | + res.resume().on('end', common.mustCall(() => { |
| 95 | + assert.strictEqual(res.statusCode, 200); |
| 96 | + server.close(); |
| 97 | + })); |
| 98 | + })); |
| 99 | + })); |
| 100 | +} |