url: revert fix url.parse() for @hostname

This reverts commit 010cb714161102de50643feb1b7aa456dba11476.

Refs: https://github.com/nodejs/node/issues/42279

PR-URL: https://github.com/nodejs/node/pull/42280
Fixes: https://github.com/nodejs/node/issues/42279
Reviewed-By: Stewart X Addison <sxa@redhat.com>
Reviewed-By: Richard Lau <rlau@redhat.com>
Reviewed-By: Darshan Sen <raisinten@gmail.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
This commit is contained in:
Antoine du Hamel 2022-03-10 15:51:50 +01:00 committed by GitHub
parent 72e83fcea6
commit f91950c43e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 31 deletions

View File

@ -289,29 +289,22 @@ Url.prototype.parse = function parse(url, parseQueryString, slashesDenoteHost) {
rest = rest.slice(proto.length);
}
// Figure out if it's got a host.
// user@server is *always* interpreted as a hostname, and URL
// Figure out if it's got a host
// user@server is *always* interpreted as a hostname, and url
// resolution will treat //foo/bar as host=foo,path=bar because that's
// how the browser resolves relative URLs. http:@example.com is treated
// the same as http://example.com.
// how the browser resolves relative URLs.
let slashes;
let at;
if (slashesDenoteHost || proto || hostPattern.test(rest)) {
slashes = rest.charCodeAt(0) === CHAR_FORWARD_SLASH &&
rest.charCodeAt(1) === CHAR_FORWARD_SLASH;
at = rest.charCodeAt(0) === CHAR_AT;
if (!(proto && hostlessProtocol.has(lowerProto))) {
if (slashes) {
rest = rest.slice(2);
this.slashes = true;
} else if (at) {
rest = rest.slice(1);
}
rest.charCodeAt(1) === CHAR_FORWARD_SLASH;
if (slashes && !(proto && hostlessProtocol.has(lowerProto))) {
rest = rest.slice(2);
this.slashes = true;
}
}
if (!hostlessProtocol.has(lowerProto) &&
(slashes || at || (proto && !slashedProtocol.has(proto)))) {
(slashes || (proto && !slashedProtocol.has(proto)))) {
// there's a hostname.
// the first instance of /, ?, ;, or # ends the host.

View File

@ -975,22 +975,7 @@ const parseTests = {
query: null,
pathname: '/everybody',
path: '/everybody',
href: '//fhqwhgads@example.com/everybody#to-the-limit',
},
'http:@localhost': {
protocol: 'http:',
slashes: null,
auth: null,
host: 'localhost',
port: null,
hostname: 'localhost',
hash: null,
search: null,
query: null,
pathname: '/',
path: '/',
href: 'http://localhost/',
href: '//fhqwhgads@example.com/everybody#to-the-limit'
},
'\bhttp://example.com/\b': {