diff --git a/lib/http/base.js b/lib/http/base.js index 64933a6d..ca84e255 100644 --- a/lib/http/base.js +++ b/lib/http/base.js @@ -63,6 +63,16 @@ HTTPBase.prototype._init = function _init() { this.server.on('connection', function(socket) { socket.on('error', function(err) { + var str; + + if (err.message === 'Parse Error') { + str = 'http_parser.execute failure ('; + str += 'parsed=' + (err.bytesParsed || -1); + str += ' code=' + err.code; + str += ')'; + err = new Error(str); + } + self.emit('error', err); try { diff --git a/lib/http/rpc.js b/lib/http/rpc.js index 976dee1e..a19b0e09 100644 --- a/lib/http/rpc.js +++ b/lib/http/rpc.js @@ -1465,7 +1465,7 @@ RPC.prototype.__submitblock = co(function* submitblock(block) { RPC.prototype.getblocktemplate = co(function* getblocktemplate(args) { var mode = 'template'; var version = -1; - var coinbase = true; + var coinbase = false; var i, opt, lpid, rules, cap, block; var coinbasevalue, coinbasetxn; @@ -1510,11 +1510,13 @@ RPC.prototype.getblocktemplate = co(function* getblocktemplate(args) { case 'coinbasevalue': coinbasevalue = true; break; + case 'coinbase/append': + break; } } - if (!coinbasetxn) - coinbase = false; + if (coinbasetxn) + coinbase = true; } } @@ -1629,6 +1631,7 @@ RPC.prototype.__template = co(function* _template(version, coinbase, rules) { mintime: block.ts, maxtime: this.network.now() + 2 * 60 * 60, mutable: mutable, + expires: 0xffffffff, noncerange: '00000000ffffffff', sigoplimit: constants.block.MAX_SIGOPS_COST / scale | 0, sizelimit: constants.block.MAX_RAW_SIZE, diff --git a/lib/http/server.js b/lib/http/server.js index c2588556..c8e48d3a 100644 --- a/lib/http/server.js +++ b/lib/http/server.js @@ -102,11 +102,11 @@ HTTPServer.prototype._init = function _init() { var self = this; this.server.on('request', function(req, res) { - if (req.pathname === '/') - return; + // if (req.pathname === '/') + // return; - self.logger.debug('Request for path=%s (%s).', - req.pathname, req.socket.remoteAddress); + self.logger.debug('Request for method=%s path=%s (%s).', + req.method, req.pathname, req.socket.remoteAddress); }); this.server.on('listening', function(address) { @@ -204,6 +204,8 @@ HTTPServer.prototype._init = function _init() { if (req.method === 'POST' && req.pathname === '/') { enforce(typeof req.body.method === 'string', 'Method must be a string.'); + if (!req.body.params) + req.body.params = []; enforce(Array.isArray(req.body.params), 'Params must be an array.'); req.options = {}; return next(); @@ -546,14 +548,15 @@ HTTPServer.prototype._init = function _init() { this.rpc = new RPC(this.node); } + this.logger.debug('RPC call for %s:', req.pathname); + this.logger.debug(req.body); + if (req.body.method === 'getwork') { res.setHeader('X-Long-Polling', '/?longpoll=1'); if (req.query.longpoll) req.body.method = 'getworklp'; } - this.logger.info(req.body); - try { json = yield this.rpc.execute(req.body); } catch (err) {