http: optimize default method case
PR-URL: https://github.com/nodejs/node/pull/10654 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Fedor Indutny <fedor.indutny@gmail.com>
This commit is contained in:
parent
5c2ef14f21
commit
dab22b5b7a
@ -105,13 +105,20 @@ function ClientRequest(options, cb) {
|
||||
self.timeout = options.timeout;
|
||||
|
||||
var method = options.method;
|
||||
if (method != null && typeof method !== 'string') {
|
||||
var methodIsString = (typeof method === 'string');
|
||||
if (method != null && !methodIsString) {
|
||||
throw new TypeError('Method must be a string');
|
||||
}
|
||||
method = self.method = (method || 'GET').toUpperCase();
|
||||
if (!common._checkIsHttpToken(method)) {
|
||||
throw new TypeError('Method must be a valid HTTP token');
|
||||
|
||||
if (methodIsString && method) {
|
||||
if (!common._checkIsHttpToken(method)) {
|
||||
throw new TypeError('Method must be a valid HTTP token');
|
||||
}
|
||||
method = self.method = method.toUpperCase();
|
||||
} else {
|
||||
method = self.method = 'GET';
|
||||
}
|
||||
|
||||
self.path = options.path || '/';
|
||||
if (cb) {
|
||||
self.once('response', cb);
|
||||
|
@ -265,8 +265,6 @@ var validTokens = [
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 // ... 255
|
||||
];
|
||||
function checkIsHttpToken(val) {
|
||||
if (typeof val !== 'string' || val.length === 0)
|
||||
return false;
|
||||
if (!validTokens[val.charCodeAt(0)])
|
||||
return false;
|
||||
if (val.length < 2)
|
||||
|
@ -314,21 +314,21 @@ function _storeHeader(firstLine, headers) {
|
||||
if (state.expect) this._send('');
|
||||
}
|
||||
|
||||
function storeHeader(self, state, field, value, validate) {
|
||||
function storeHeader(self, state, key, value, validate) {
|
||||
if (validate) {
|
||||
if (!checkIsHttpToken(field)) {
|
||||
if (typeof key !== 'string' || !key || !checkIsHttpToken(key)) {
|
||||
throw new TypeError(
|
||||
'Header name must be a valid HTTP Token ["' + field + '"]');
|
||||
'Header name must be a valid HTTP Token ["' + key + '"]');
|
||||
}
|
||||
if (value === undefined) {
|
||||
throw new Error('Header "%s" value must not be undefined', field);
|
||||
throw new Error('Header "%s" value must not be undefined', key);
|
||||
} else if (checkInvalidHeaderChar(value)) {
|
||||
debug('Header "%s" contains invalid characters', field);
|
||||
debug('Header "%s" contains invalid characters', key);
|
||||
throw new TypeError('The header content contains invalid characters');
|
||||
}
|
||||
}
|
||||
state.header += field + ': ' + escapeHeaderValue(value) + CRLF;
|
||||
matchHeader(self, state, field, value);
|
||||
state.header += key + ': ' + escapeHeaderValue(value) + CRLF;
|
||||
matchHeader(self, state, key, value);
|
||||
}
|
||||
|
||||
function matchConnValue(self, state, value) {
|
||||
@ -374,7 +374,7 @@ function matchHeader(self, state, field, value) {
|
||||
}
|
||||
|
||||
function validateHeader(msg, name, value) {
|
||||
if (!checkIsHttpToken(name))
|
||||
if (typeof name !== 'string' || !name || !checkIsHttpToken(name))
|
||||
throw new TypeError(
|
||||
'Header name must be a valid HTTP Token ["' + name + '"]');
|
||||
if (value === undefined)
|
||||
@ -568,7 +568,7 @@ OutgoingMessage.prototype.addTrailers = function addTrailers(headers) {
|
||||
field = key;
|
||||
value = headers[key];
|
||||
}
|
||||
if (!checkIsHttpToken(field)) {
|
||||
if (typeof field !== 'string' || !field || !checkIsHttpToken(field)) {
|
||||
throw new TypeError(
|
||||
'Trailer name must be a valid HTTP Token ["' + field + '"]');
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user