summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorraisinten <raisinten@gmail.com>2021-01-09 18:17:43 +0530
committerDarshan Sen <raisinten@gmail.com>2021-02-11 19:30:28 +0530
commit295e766c2782d6d83e33004f7c2204c0a8d52655 (patch)
treecaf632e86ee063d4cabb97b6979945e060f460a9
parentad38be4f6ab38c7974b9014564af6de1b94dfb36 (diff)
downloadnode-new-295e766c2782d6d83e33004f7c2204c0a8d52655.tar.gz
lib: remove usage of url.parse
Since url.parse() is deprecated, it must not be used inside Node.js. PR-URL: https://github.com/nodejs/node/pull/36853 Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Beth Griggs <bgriggs@redhat.com> Reviewed-By: Сковорода Никита Андреевич <chalkerx@gmail.com>
-rw-r--r--doc/api/deprecations.md5
-rw-r--r--lib/_http_client.js18
-rw-r--r--lib/https.js18
-rw-r--r--lib/tls.js18
-rw-r--r--test/parallel/test-http-deprecated-urls.js33
-rw-r--r--test/parallel/test-tls-check-server-identity.js14
6 files changed, 7 insertions, 99 deletions
diff --git a/doc/api/deprecations.md b/doc/api/deprecations.md
index b337441c3a..12cbb55d01 100644
--- a/doc/api/deprecations.md
+++ b/doc/api/deprecations.md
@@ -2051,12 +2051,15 @@ expose values under these names.
### DEP0109: `http`, `https`, and `tls` support for invalid URLs
<!-- YAML
changes:
+ - version: REPLACEME
+ pr-url: https://github.com/nodejs/node/pull/36853
+ description: End-of-Life.
- version: v11.0.0
pr-url: https://github.com/nodejs/node/pull/20270
description: Runtime deprecation.
-->
-Type: Runtime
+Type: End-of-Life
Some previously supported (but strictly invalid) URLs were accepted through the
[`http.request()`][], [`http.get()`][], [`https.request()`][],
diff --git a/lib/_http_client.js b/lib/_http_client.js
index 930888863e..842a33a41f 100644
--- a/lib/_http_client.js
+++ b/lib/_http_client.js
@@ -42,7 +42,6 @@ const {
} = primordials;
const net = require('net');
-const url = require('url');
const assert = require('internal/assert');
const { once } = require('internal/util');
const {
@@ -98,27 +97,12 @@ class HTTPClientAsyncResource {
}
}
-let urlWarningEmitted = false;
function ClientRequest(input, options, cb) {
FunctionPrototypeCall(OutgoingMessage, this);
if (typeof input === 'string') {
const urlStr = input;
- try {
- input = urlToHttpOptions(new URL(urlStr));
- } catch (err) {
- input = url.parse(urlStr);
- if (!input.hostname) {
- throw err;
- }
- if (!urlWarningEmitted && !process.noDeprecation) {
- urlWarningEmitted = true;
- process.emitWarning(
- `The provided URL ${urlStr} is not a valid URL, and is supported ` +
- 'in the http module solely for compatibility.',
- 'DeprecationWarning', 'DEP0109');
- }
- }
+ input = urlToHttpOptions(new URL(urlStr));
} else if (input && input[searchParamsSymbol] &&
input[searchParamsSymbol][searchParamsSymbol]) {
// url.URL instance
diff --git a/lib/https.js b/lib/https.js
index 79ac6c6bd5..080efe40fa 100644
--- a/lib/https.js
+++ b/lib/https.js
@@ -37,7 +37,6 @@ const {
require('internal/util').assertCrypto();
const tls = require('tls');
-const url = require('url');
const { Agent: HttpAgent } = require('_http_agent');
const {
Server: HttpServer,
@@ -296,27 +295,12 @@ Agent.prototype._evictSession = function _evictSession(key) {
const globalAgent = new Agent();
-let urlWarningEmitted = false;
function request(...args) {
let options = {};
if (typeof args[0] === 'string') {
const urlStr = ArrayPrototypeShift(args);
- try {
- options = urlToHttpOptions(new URL(urlStr));
- } catch (err) {
- options = url.parse(urlStr);
- if (!options.hostname) {
- throw err;
- }
- if (!urlWarningEmitted && !process.noDeprecation) {
- urlWarningEmitted = true;
- process.emitWarning(
- `The provided URL ${urlStr} is not a valid URL, and is supported ` +
- 'in the https module solely for compatibility.',
- 'DeprecationWarning', 'DEP0109');
- }
- }
+ options = urlToHttpOptions(new URL(urlStr));
} else if (args[0] && args[0][searchParamsSymbol] &&
args[0][searchParamsSymbol][searchParamsSymbol]) {
// url.URL instance
diff --git a/lib/tls.js b/lib/tls.js
index 49c7d24517..eae34a4239 100644
--- a/lib/tls.js
+++ b/lib/tls.js
@@ -55,7 +55,6 @@ const { isArrayBufferView } = require('internal/util/types');
const net = require('net');
const { getOptionValue } = require('internal/options');
-const url = require('url');
const { getRootCertificates, getSSLCiphers } = internalBinding('crypto');
const { Buffer } = require('buffer');
const EventEmitter = require('events');
@@ -230,7 +229,6 @@ function check(hostParts, pattern, wildcards) {
return true;
}
-let urlWarningEmitted = false;
exports.checkServerIdentity = function checkServerIdentity(hostname, cert) {
const subject = cert.subject;
const altNames = cert.subjectaltname;
@@ -246,21 +244,7 @@ exports.checkServerIdentity = function checkServerIdentity(hostname, cert) {
if (StringPrototypeStartsWith(name, 'DNS:')) {
ArrayPrototypePush(dnsNames, StringPrototypeSlice(name, 4));
} else if (StringPrototypeStartsWith(name, 'URI:')) {
- let uri;
- try {
- uri = new URL(StringPrototypeSlice(name, 4));
- } catch {
- const slicedName = StringPrototypeSlice(name, 4);
- uri = url.parse(slicedName);
- if (!urlWarningEmitted && !process.noDeprecation) {
- urlWarningEmitted = true;
- process.emitWarning(
- `The URI ${slicedName} found in cert.subjectaltname ` +
- 'is not a valid URI, and is supported in the tls module ' +
- 'solely for compatibility.',
- 'DeprecationWarning', 'DEP0109');
- }
- }
+ const uri = new URL(StringPrototypeSlice(name, 4));
// TODO(bnoordhuis) Also use scheme.
ArrayPrototypePush(uriNames, uri.hostname);
diff --git a/test/parallel/test-http-deprecated-urls.js b/test/parallel/test-http-deprecated-urls.js
deleted file mode 100644
index 5bb9f66ebe..0000000000
--- a/test/parallel/test-http-deprecated-urls.js
+++ /dev/null
@@ -1,33 +0,0 @@
-/* eslint-disable node-core/crypto-check */
-
-'use strict';
-
-const common = require('../common');
-
-const http = require('http');
-const modules = { http };
-
-const deprecations = [
- ['The provided URL http://[www.nodejs.org] is not a valid URL, and is supported ' +
- 'in the http module solely for compatibility.',
- 'DEP0109'],
-];
-
-if (common.hasCrypto) {
- const https = require('https');
- modules.https = https;
- deprecations.push(
- ['The provided URL https://[www.nodejs.org] is not a valid URL, and is supported ' +
- 'in the https module solely for compatibility.',
- 'DEP0109'],
- );
-}
-
-common.expectWarning('DeprecationWarning', deprecations);
-
-Object.keys(modules).forEach((module) => {
- const doNotCall = common.mustNotCall(
- `${module}.request should not connect to ${module}://[www.nodejs.org]`
- );
- modules[module].request(`${module}://[www.nodejs.org]`, doNotCall).abort();
-});
diff --git a/test/parallel/test-tls-check-server-identity.js b/test/parallel/test-tls-check-server-identity.js
index deeeecdec9..ad79d93a3d 100644
--- a/test/parallel/test-tls-check-server-identity.js
+++ b/test/parallel/test-tls-check-server-identity.js
@@ -30,13 +30,6 @@ const util = require('util');
const tls = require('tls');
-common.expectWarning('DeprecationWarning', [
- ['The URI http://[a.b.a.com]/ found in cert.subjectaltname ' +
- 'is not a valid URI, and is supported in the tls module ' +
- 'solely for compatibility.',
- 'DEP0109'],
-]);
-
const tests = [
// False-y values.
{
@@ -282,13 +275,6 @@ const tests = [
error: 'Host: a.b.a.com. is not in the cert\'s altnames: ' +
'URI:http://*.b.a.com/'
},
- // Invalid URI
- {
- host: 'a.b.a.com', cert: {
- subjectaltname: 'URI:http://[a.b.a.com]/',
- subject: {}
- }
- },
// IP addresses
{
host: 'a.b.a.com', cert: {