diff --git a/lib/parameters.js b/lib/parameters.js index 34a0322e..db019eae 100644 --- a/lib/parameters.js +++ b/lib/parameters.js @@ -47,4 +47,7 @@ p.exchangeLifetime = p.maxTransmitSpan + p.maxRTT // default port for CoAP p.coapPort = 5683 +// default max packet size +p.maxPacketSize = 1280 + module.exports = p diff --git a/lib/server.js b/lib/server.js index a0793cf1..12a2f081 100644 --- a/lib/server.js +++ b/lib/server.js @@ -202,7 +202,10 @@ function OutMessage() { } util.inherits(OutMessage, OutgoingMessage) -var maxBlock2 = 1024 //16, 32, 64, must <= 2**(6+4) +// maxBlock2 is in formular 2**(i+4), and must <= 2**(6+4) +var maxBlock2 = Math.pow(2, Math.floor(Math.log(parameters.maxPacketSize)/Math.log(2))) +if (maxBlock2 > Math.pow(2, (6+4))) + maxBlock2 = Math.pow(2, (6+4)) OutMessage.prototype.end= function(payload) { var that = this @@ -210,7 +213,7 @@ OutMessage.prototype.end= function(payload) { // if payload is suitable for ONE message, shoot it out if (!payload || - ((!requestedBlockOption) && (payload.length < maxBlock2))) + ((!requestedBlockOption) && (payload.length < parameters.maxPacketSize))) return OutgoingMessage.prototype.end.call(this, payload) // for the first request, block2 option may be missed