summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShuan Wang <shuanwang@gmail.com>2013-07-17 13:10:09 -0700
committerisaacs <i@izs.me>2013-07-17 15:59:28 -0700
commit48a4600c5669bb2b624bf004bbbb88a2d97ff6f8 (patch)
treecae0ea1eaf67f25edaec3e618853197b258e7c79
parent04e0324f6a8a4bc39ec2e7488435d023626a6140 (diff)
downloadnode-48a4600c5669bb2b624bf004bbbb88a2d97ff6f8.tar.gz
url: Fix edge-case when protocol is non-lowercase
When using url.parse(), path and pathname usually return '/' when there is no path available. However when you have a protocol that contains non-lowercase letters and the input string does not have a trailing slash, both path and pathname will be undefined.
-rw-r--r--lib/url.js2
-rw-r--r--test/simple/test-url.js10
2 files changed, 11 insertions, 1 deletions
diff --git a/lib/url.js b/lib/url.js
index bacf201dd..09e9cceb4 100644
--- a/lib/url.js
+++ b/lib/url.js
@@ -318,7 +318,7 @@ Url.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {
this.query = {};
}
if (rest) this.pathname = rest;
- if (slashedProtocol[proto] &&
+ if (slashedProtocol[lowerProto] &&
this.hostname && !this.pathname) {
this.pathname = '/';
}
diff --git a/test/simple/test-url.js b/test/simple/test-url.js
index d27abbab8..57d0a6d5a 100644
--- a/test/simple/test-url.js
+++ b/test/simple/test-url.js
@@ -44,6 +44,16 @@ var parseTests = {
'path': '/'
},
+ 'HTTP://www.example.com' : {
+ 'href': 'http://www.example.com/',
+ 'protocol': 'http:',
+ 'slashes': true,
+ 'host': 'www.example.com',
+ 'hostname': 'www.example.com',
+ 'pathname': '/',
+ 'path': '/'
+ },
+
'http://www.ExAmPlE.com/' : {
'href': 'http://www.example.com/',
'protocol': 'http:',