| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent b5cdc27 commit 24033ee
2 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -59,9 +59,11 @@ const MAX_HEADER_PAIRS = 2000; | |||
| 59 | 59 | // called to process trailing HTTP headers. | |
| 60 | 60 | function parserOnHeaders(headers, url) { | |
| 61 | 61 | // Once we exceeded headers limit - stop collecting them | |
| 62 | - if (this.maxHeaderPairs <= 0 || | ||
| 63 | - this._headers.length < this.maxHeaderPairs) { | ||
| 62 | + const capacity = this.maxHeaderPairs - this._headers.length; | ||
| 63 | + if (this.maxHeaderPairs <= 0 || capacity >= headers.length) { | ||
| 64 | 64 | this._headers.push(...headers); | |
| 65 | + } else if (capacity > 0) { | ||
| 66 | + this._headers.push(...headers.slice(0, capacity)); | ||
| 65 | 67 | } | |
| 66 | 68 | this._url += url; | |
| 67 | 69 | } | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,26 @@ | |||
| 1 | + 'use strict'; | ||
| 2 | + const common = require('../common'); | ||
| 3 | + const assert = require('assert'); | ||
| 4 | + const http = require('http'); | ||
| 5 | + const net = require('net'); | ||
| 6 | + | ||
| 7 | + const server = http.createServer(common.mustCall((req, res) => { | ||
| 8 | + const limit = server.maxHeadersCount * 2; | ||
| 9 | + assert.ok(req.rawHeaders.length <= limit, | ||
| 10 | + `rawHeaders.length (${req.rawHeaders.length}) exceeds limit (${limit})`); | ||
| 11 | + res.end(); | ||
| 12 | + server.close(); | ||
| 13 | + })); | ||
| 14 | + | ||
| 15 | + server.maxHeadersCount = 50; | ||
| 16 | + | ||
| 17 | + server.listen(0, common.mustCall(() => { | ||
| 18 | + const port = server.address().port; | ||
| 19 | + const headers = Array.from({ length: 65 }, (_, i) => `X-${i}:v`).join('\r\n'); | ||
| 20 | + const req = `GET / HTTP/1.1\r\nHost: localhost\r\n${headers}\r\n\r\n`; | ||
| 21 | + | ||
| 22 | + net.createConnection(port, 'localhost', function() { | ||
| 23 | + this.write(req); | ||
| 24 | + this.once('data', () => this.end()); | ||
| 25 | + }); | ||
| 26 | + })); | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments