diff --git a/lib/server.ts b/lib/server.ts index fee88766..0d87f785 100644 --- a/lib/server.ts +++ b/lib/server.ts @@ -720,6 +720,11 @@ class OutMessage extends OutgoingMessage { } this.setOption('Block2', block2) this.setOption('ETag', _toETag(payload)) + const size2 = getOption(this._request.options, 'Size2') + + if (size2 === 0) { + this.setOption('Size2', payload.length) + } // cache it if (this._request.token != null && this._request.token.length > 0) { diff --git a/package.json b/package.json index df6df3cb..12a45d34 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "coap", - "version": "1.1.0", + "version": "1.2.0", "description": "A CoAP library for node modelled after 'http'", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/test/blockwise.ts b/test/blockwise.ts index 497d6da8..b14d035a 100644 --- a/test/blockwise.ts +++ b/test/blockwise.ts @@ -7,7 +7,7 @@ */ import { nextPort } from './common' -import { createServer, request } from '../index' +import { createServer, IncomingMessage, request } from '../index' import { generate, Packet, parse } from 'coap-packet' import { getOption, parseBlock2 } from '../lib/helpers' import { generateBlockOption, parseBlockOption, exponentToByteSize, byteSizeToExponent } from '../lib/block' @@ -363,6 +363,22 @@ describe('blockwise2', function () { parallelBlock2Test(done, checkNothing, checkBlock2Payload, checkNormalRespPayload) }) + + it.only('should support the Size2 option', function (done) { + request({ + port + }) + .setOption('Size2', 0) + .on('response', (res: IncomingMessage) => { + const size2 = res.headers.Size2 + expect(size2).to.eql(payload.length) + setImmediate(done) + }) + .end() + server.on('request', (req, res) => { + res.end(payload) + }) + }) }) describe('blockwise1', () => {