diff --git a/lib/internal/url.js b/lib/internal/url.js index 64ebf383e6eb31..9558b083a2b89d 100644 --- a/lib/internal/url.js +++ b/lib/internal/url.js @@ -132,6 +132,7 @@ function onParseProtocolComplete(flags, protocol, username, password, ctx.flags &= ~URL_FLAGS_SPECIAL; } ctx.scheme = protocol; + ctx.port = port; } function onParseHostComplete(flags, protocol, username, password, diff --git a/src/node_url.cc b/src/node_url.cc index 703ff4ffd61335..2865f445e44606 100644 --- a/src/node_url.cc +++ b/src/node_url.cc @@ -1244,6 +1244,7 @@ void URL::Parse(const char* input, } url->scheme = buffer; + url->port = NormalizePort(url->scheme, url->port); if (new_is_special) { url->flags |= URL_FLAGS_SPECIAL; special = true; diff --git a/test/fixtures/url-setter-tests.js b/test/fixtures/url-setter-tests.js index 42580312c25bc3..923110d9364132 100644 --- a/test/fixtures/url-setter-tests.js +++ b/test/fixtures/url-setter-tests.js @@ -1,7 +1,7 @@ 'use strict'; /* WPT Refs: - https://github.com/w3c/web-platform-tests/blob/3eff1bd/url/setters_tests.json + https://github.com/w3c/web-platform-tests/blob/b30abaecf4/url/setters_tests.json License: http://www.w3.org/Consortium/Legal/2008/04-testsuite-copyright.html */ module.exports = @@ -266,6 +266,16 @@ module.exports = "href": "view-source+data:text/html,

Test", "protocol": "view-source+data:" } + }, + { + "comment": "Port is set to null if it is the default for new scheme.", + "href": "http://foo.com:443/", + "new_value": "https", + "expected": { + "href": "https://foo.com/", + "protocol": "https:", + "port": "" + } } ], "username": [