Skip to content

lib: support overriding http\s.globalAgent

Overriding require('http').globalAgent and require('https').globalAgent is now respected by consequent requests.

In order to achieve that, the following changes were made:

  1. http: module.exports.globalAgent is now defined through Object.defineProperty. Its getter and setter return \ set require('_http_agent').globalAgent.
  2. https: the https globalAgent is not the same as _http_agent, and is defined in https module itself. Therefore, the fix here was to simply use module.exports.globalAgent to support mutation.
  3. test/parallel: according tests were added for both http and https, where in both we create a server, set the default agent to a newly created instance and make a request to that server. We then assert that the given instance was actually used by inspecting its sockets property.

Fixes: https://github.com/nodejs/node/issues/23281

On a side note, this is my first contribution to the project. Would appreciate feedback :)

Checklist
  • make -j4 test (UNIX), or vcbuild test (Windows) passes
  • tests and/or benchmarks are included
  • commit message follows commit guidelines

Merge request reports

Loading