diff --git a/lib/manager.js b/lib/manager.js index 17912a8..57d5ddb 100644 --- a/lib/manager.js +++ b/lib/manager.js @@ -165,9 +165,6 @@ function managerRetry(self, id) } else { delete(self._requests[id]); request.cb(1, {}); - - if (Object.keys(self._requests).length == 0) - self._dgram.close(); } } @@ -196,9 +193,6 @@ function managerRecv(self, buf, peer) nextBulkGet(self, options, msg.varBindList); break; } - - if (Object.keys(self._requests).length == 0) - self._dgram.close(); } /* API */ @@ -225,10 +219,14 @@ function Manager(options) function (err) { /* XXX */ }); this._dgram.bind(options.localport); - process.nextTick(function() { - if (Object.keys(self._requests).length == 0) - self._dgram.close(); - }); +} + +Manager.prototype.close = function() { + try { + this._dgram.close(); + } catch(e) { + // ?? I don't think we care + } } Manager.prototype.get = function (agent, oids, cb, options) diff --git a/lib/messages/message.js b/lib/messages/message.js index 6130a43..66f89ee 100644 --- a/lib/messages/message.js +++ b/lib/messages/message.js @@ -58,7 +58,7 @@ function parseInt(ber, tag) value = value.shiftLeft(8).add(a); } - return (fb & 0x80) ? value.mul(-1) : value; + return (fb & 0x80) ? value.subtract(BigInteger.valueOf(Math.pow(2,(buf.length*8)-1))) : value; } var intTypes = [ ASN1.Ber.Integer, 65, 66, 67, 70 ]; for (var i = 0; i < intTypes.length; i++) { diff --git a/package.json b/package.json index dc5237c..20cbd19 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "author": "David Gwynne ", "name": "snmp", "description": "SNMP APIs", - "version": "0.0.2", + "version": "0.0.3", "repository": { "type": "git", "url": "git://github.com/dgwynne/node-snmp.git" @@ -12,7 +12,7 @@ "lib": "./lib" }, "engines": { - "node": ">=0.4" + "node": ">=0.6" }, "dependencies": { "asn1": "0.1.11",