Skip to content

Commit 40052ea

Browse files
committed
Make compatible with Node 17.
1 parent 86f7572 commit 40052ea

File tree

12 files changed

+116
-152
lines changed

12 files changed

+116
-152
lines changed

.github/workflows/ci.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,14 @@ jobs:
3434
- '15.x'
3535
- '16.0'
3636
- '16.x'
37+
- '17.0'
38+
- '17.x'
3739
steps:
3840
- name: Use Node.js ${{ matrix.node-version }}
3941
uses: actions/setup-node@v2
4042
with:
4143
node-version: ${{ matrix.node-version }}
4244
- uses: actions/checkout@v2
43-
- if: ${{ matrix.node-version == '4.x' || matrix.node-version == '6.0' }}
44-
4545
- run: npm install
4646
- if: ${{ matrix.node-version == '4.x' }}
4747

index.js

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ events.forEach(function (event) {
1818
// Error types with codes
1919
var RedirectionError = createErrorType(
2020
"ERR_FR_REDIRECTION_FAILURE",
21-
""
21+
"Redirected request failed"
2222
);
2323
var TooManyRedirectsError = createErrorType(
2424
"ERR_FR_TOO_MANY_REDIRECTS",
@@ -376,8 +376,17 @@ RedirectableRequest.prototype._processResponse = function (response) {
376376
var currentUrl = /^\w+:/.test(location) ? this._currentUrl :
377377
url.format(Object.assign(currentUrlParts, { host: currentHost }));
378378

379+
// Determine the URL of the redirection
380+
var redirectUrl;
381+
try {
382+
redirectUrl = url.resolve(currentUrl, location);
383+
}
384+
catch (cause) {
385+
this.emit("error", new RedirectionError(cause));
386+
return;
387+
}
388+
379389
// Create the redirected request
380-
var redirectUrl = url.resolve(currentUrl, location);
381390
debug("redirecting to", redirectUrl);
382391
this._isRedirect = true;
383392
var redirectUrlParts = url.parse(redirectUrl);
@@ -406,9 +415,7 @@ RedirectableRequest.prototype._processResponse = function (response) {
406415
this._performRequest();
407416
}
408417
catch (cause) {
409-
var error = new RedirectionError("Redirected request failed: " + cause.message);
410-
error.cause = cause;
411-
this.emit("error", error);
418+
this.emit("error", new RedirectionError(cause));
412419
}
413420
}
414421
else {
@@ -526,9 +533,15 @@ function removeMatchingHeaders(regex, headers) {
526533
}
527534

528535
function createErrorType(code, defaultMessage) {
529-
function CustomError(message) {
536+
function CustomError(cause) {
530537
Error.captureStackTrace(this, this.constructor);
531-
this.message = message || defaultMessage;
538+
if (!cause) {
539+
this.message = defaultMessage;
540+
}
541+
else {
542+
this.message = defaultMessage + ": " + cause.message;
543+
this.cause = cause;
544+
}
532545
}
533546
CustomError.prototype = new Error();
534547
CustomError.prototype.constructor = CustomError;

test/assets/TestCA.crt

Lines changed: 0 additions & 19 deletions
This file was deleted.

test/assets/TestCA.pem

Lines changed: 0 additions & 27 deletions
This file was deleted.

test/assets/TestClient.crt

Lines changed: 0 additions & 19 deletions
This file was deleted.

test/assets/TestClient.pem

Lines changed: 0 additions & 27 deletions
This file was deleted.

test/assets/TestServer.crt

Lines changed: 0 additions & 19 deletions
This file was deleted.

test/assets/TestServer.pem

Lines changed: 0 additions & 27 deletions
This file was deleted.

test/assets/ca.crt

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIICmDCCAYACCQDo0UEmHVSlqjANBgkqhkiG9w0BAQsFADANMQswCQYDVQQGEwJC
3+
RTAgFw0yMTEwMzAxODEwMDZaGA8yMTIxMTAwNjE4MTAwNlowDTELMAkGA1UEBhMC
4+
QkUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYjGqoyk9fKI/Hrl8R
5+
4E/7A3YzvsSnDhxyOT+k7YRTpuHwL7HF/9C5EFbGPgh0c8VsQxEzbPlAwPgajeHR
6+
K6zFpqbkA7wozktV/vIm8DZdc5h2flUpjScazAP/MXMp7i0CpR4qmsRl9HuhFmmd
7+
D9VxwWjgT4rafrOXhX8HjQ015FvjpFlFAzEiRAuxJzS0zd9OmDOyR4/VxBCHyf9D
8+
Wz4yfZdjaXXfbc5ljJiBGS4vR0inx2hPwcxD8YWHI+o9lSCjsr1OFy0bpjJ/aXih
9+
Na4pe19Np0IoI+s+mlx568+WqYXbFNovH71gUhhaUtZPWByzPaeHdK5SeylZArHl
10+
lkKPAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAIIUHDzunkvnZ5DBMOKbEVn0fr2R
11+
yvKVNtRp59OWF1nJH9pr318TSk+yIClBRIismMHM6GnFYpDjqiGfJYtSN/amupGK
12+
h9b6aMDKKfSr7iAi9DzgPEvYaWcXGMRWmOWqxGS9zsvmM1vGkL7KsCWGIbtstxg+
13+
P8m4HSO6zXuBpe68yRSnNgrusMr1jviDE+aiyZANiZm7TPfIr7NHHmTk82aZtYCH
14+
yuDujnE5cNhJHH9iBGOBm51TZDMg9lFm9ItEAfHTC5++KfXMYokg7fqCJFU6d2y8
15+
O2P7e16PvX6lWcwTENq9ENiyEuTch3r+ZemJpoudKeaBcdrvLHSm+Nkvgwg=
16+
-----END CERTIFICATE-----

test/assets/localhost.crt

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIDDDCCAfSgAwIBAgIJALzCVuuVEADhMA0GCSqGSIb3DQEBCwUAMA0xCzAJBgNV
3+
BAYTAkJFMCAXDTIxMTAzMDE4MTExNVoYDzIxMjExMDA2MTgxMTE1WjAhMQswCQYD
4+
VQQGEwJCRTESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOC
5+
AQ8AMIIBCgKCAQEAroS25VMhjk1IvVv3gvB4ZMPhwRpeDP/gfdd2mWaqPS9m/S36
6+
9DXGXKBiuNN0GNR8Ng1voaowFPRpvJAR6JBAhpdJsV+rLONg2jqUR49ihDZwpl77
7+
bvYG91DXcWGRAPLjEIHZQFtvZjQxTRGo3c614GyLzO4bz1Cac0TLtSwmlgOzWcg7
8+
g45+uvZOT7bJ7/7ryjUGassKiwE39RIRlFrE6DBj8TPTBmBSA6fzA2mlDX1YQzEz
9+
cZw7aM7IyTKEKM5C5Cc2H3ykd+fejPi/zM4ntrAOyeDXOwfskU5eXg8p/tL8USBn
10+
pDA94i1CNXBI+FDLwD2NZMVTb3J9vzghaN/5XwIDAQABo1kwVzAnBgNVHSMEIDAe
11+
oRGkDzANMQswCQYDVQQGEwJCRYIJAOjRQSYdVKWqMAkGA1UdEwQCMAAwCwYDVR0P
12+
BAQDAgTwMBQGA1UdEQQNMAuCCWxvY2FsaG9zdDANBgkqhkiG9w0BAQsFAAOCAQEA
13+
PvKbSVKzOBxl5MRczuo/QULzFLu6Rwe7dxVbTH4mOvcf2Njd5rL6oKZNAbPp5TBa
14+
HSXXIVJsB0cKVBMtovu+Q343AeMxPHclCOTXnKfTG3OplLuhtkzsjDMrjzynLnUK
15+
8iLdBT44Sa4BEPJwguZMb3fvhUKtbCj3WhoIodOgyD3W+Ufyvn5C9be6G9feBWrJ
16+
52O1HPp72oi54gng0VhqzUXhN6FfFSwFygxf22C1m1grl4CBdfYb6DV17JqINtk8
17+
HK0QOiWXlmUaGHOEYz8FZPOliUPpJWeD0N/tCAbkAYbMPvog93E1yNJjW4SYAh7z
18+
kVhFAcus9F4V9K47vx4a5w==
19+
-----END CERTIFICATE-----

0 commit comments

Comments
 (0)