http: better querystring parsing.
This commit is contained in:
parent
ac483eaedd
commit
c3ff43c85b
@ -10,6 +10,7 @@
|
||||
var AsyncObject = require('../utils/async');
|
||||
var utils = require('../utils/utils');
|
||||
var assert = require('assert');
|
||||
var url = require('url');
|
||||
|
||||
/**
|
||||
* HTTPBase
|
||||
@ -92,12 +93,12 @@ HTTPBase.prototype._initRouter = function _initRouter() {
|
||||
|
||||
function done(err) {
|
||||
if (err) {
|
||||
send(res, 400, { error: err.message + '' });
|
||||
send(res, err.statusCode || 400, { error: err.message + '' });
|
||||
try {
|
||||
req.destroy();
|
||||
req.socket.destroy();
|
||||
} catch (e) {
|
||||
self.emit('error', e);
|
||||
;
|
||||
}
|
||||
self.emit('error', err);
|
||||
}
|
||||
@ -512,35 +513,40 @@ function parseBody(req, callback) {
|
||||
});
|
||||
}
|
||||
|
||||
function parsePairs(str, del, eq) {
|
||||
var out, s, i, parts;
|
||||
function parsePairs(str) {
|
||||
var parts = str.split('&');
|
||||
var data = {};
|
||||
var i, index, pair, key, value;
|
||||
|
||||
if (!str)
|
||||
return {};
|
||||
for (i = 0; i < parts.length; i++) {
|
||||
pair = parts[i];
|
||||
index = pair.indexOf('=');
|
||||
|
||||
if (!del)
|
||||
del = '&';
|
||||
|
||||
if (!eq)
|
||||
eq = '=';
|
||||
|
||||
out = {};
|
||||
s = str.split(del);
|
||||
|
||||
for (i = 0; i < s.length; i++) {
|
||||
parts = s[i].split(eq);
|
||||
if (parts[0]) {
|
||||
parts[0] = unescape(parts[0]);
|
||||
parts[1] = parts[1] ? unescape(parts[1]) : '';
|
||||
out[parts[0]] = parts[1];
|
||||
if (index === -1) {
|
||||
key = pair;
|
||||
value = '';
|
||||
} else {
|
||||
key = pair.substring(0, index);
|
||||
value = pair.substring(index + 1);
|
||||
}
|
||||
|
||||
key = unescape(key);
|
||||
|
||||
if (key.length === 0)
|
||||
continue;
|
||||
|
||||
value = unescape(value);
|
||||
|
||||
if (value.length === 0)
|
||||
continue;
|
||||
|
||||
data[key] = value;
|
||||
}
|
||||
|
||||
return out;
|
||||
return data;
|
||||
}
|
||||
|
||||
function parsePath(req) {
|
||||
var url = require('url');
|
||||
var uri = url.parse(req.url);
|
||||
var pathname = uri.pathname || '/';
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user