From b06909f0276be1150282820259ca8efa2951381d Mon Sep 17 00:00:00 2001 From: Daniel Bevenius Date: Sun, 17 Sep 2017 12:11:51 +0200 Subject: [PATCH 1/5] src: use UV_EINVAL instead of EINVAL in udp_wrap Currently if the buffer size exceeds the maximum int size the following error will be thrown: dgram.js:180 throw new errors.Error('ERR_SOCKET_BUFFER_SIZE', e); ^ Error [ERR_SOCKET_BUFFER_SIZE]: Could not get or set buffer size: Error: Unknown system error 22: Unknown system error 22, uv_recv_buffer_size at bufferSize (dgram.js:180:11) It looks like perhaps UV_EINVAL was intended to give the following error message instead: dgram.js:180 throw new errors.Error('ERR_SOCKET_BUFFER_SIZE', e); ^ Error [ERR_SOCKET_BUFFER_SIZE]: Could not get or set buffer size: Error: EINVAL: invalid argument, uv_recv_buffer_size at bufferSize (dgram.js:180:11) This commit changes EINVAL to use UV_EINVAL. --- src/udp_wrap.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/udp_wrap.cc b/src/udp_wrap.cc index 1f67296076bb25..8a4b6ea9664cfb 100644 --- a/src/udp_wrap.cc +++ b/src/udp_wrap.cc @@ -237,9 +237,9 @@ void UDPWrap::BufferSize(const FunctionCallbackInfo& args) { if (!args[0]->IsInt32()) { if (args[1].As()->Value() == 0) - return env->ThrowUVException(EINVAL, "uv_recv_buffer_size"); + return env->ThrowUVException(UV_EINVAL, "uv_recv_buffer_size"); else - return env->ThrowUVException(EINVAL, "uv_send_buffer_size"); + return env->ThrowUVException(UV_EINVAL, "uv_send_buffer_size"); } int err; From 517886867406245136c506acce7a070fbeb6873b Mon Sep 17 00:00:00 2001 From: Daniel Bevenius Date: Sun, 17 Sep 2017 18:15:13 +0200 Subject: [PATCH 2/5] squash: add test for recv/send buffer sizes --- .../parallel/test-dgram-socket-buffer-size.js | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/test/parallel/test-dgram-socket-buffer-size.js b/test/parallel/test-dgram-socket-buffer-size.js index 13fbd4fb4be601..6079f6a9205077 100644 --- a/test/parallel/test-dgram-socket-buffer-size.js +++ b/test/parallel/test-dgram-socket-buffer-size.js @@ -72,3 +72,25 @@ const dgram = require('dgram'); socket.close(); })); } + +function checkBufferSizeError(type, size) { + const errorObj = { + code: 'ERR_SOCKET_BUFFER_SIZE', + type: Error, + message: new RegExp('^Could not get or set buffer' + + ' size: Error: EINVAL: invalid argument,' + + ' uv_' + type + '_buffer_size$') + }; + const functionName = 'set' + type.charAt(0).toUpperCase() + + type.slice(1) + 'BufferSize'; + const socket = dgram.createSocket('udp4'); + socket.bind(common.mustCall(() => { + assert.throws(() => { + socket[functionName](size); + }, common.expectsError(errorObj)); + socket.close(); + })); +} + +checkBufferSizeError('recv', 2147483648); +checkBufferSizeError('send', 2147483648); From 2a76b64d3a700ff9178ba2be2457629b628ca99f Mon Sep 17 00:00:00 2001 From: Daniel Bevenius Date: Mon, 18 Sep 2017 06:50:38 +0200 Subject: [PATCH 3/5] squash: use string instread of a regexp --- test/parallel/test-dgram-socket-buffer-size.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/parallel/test-dgram-socket-buffer-size.js b/test/parallel/test-dgram-socket-buffer-size.js index 6079f6a9205077..40e70a45d81c2f 100644 --- a/test/parallel/test-dgram-socket-buffer-size.js +++ b/test/parallel/test-dgram-socket-buffer-size.js @@ -77,9 +77,9 @@ function checkBufferSizeError(type, size) { const errorObj = { code: 'ERR_SOCKET_BUFFER_SIZE', type: Error, - message: new RegExp('^Could not get or set buffer' + + message: 'Could not get or set buffer' + ' size: Error: EINVAL: invalid argument,' + - ' uv_' + type + '_buffer_size$') + ' uv_' + type + '_buffer_size' }; const functionName = 'set' + type.charAt(0).toUpperCase() + type.slice(1) + 'BufferSize'; From dfc29b2780da462a3b590db43fab84264576ac9c Mon Sep 17 00:00:00 2001 From: Daniel Bevenius Date: Mon, 18 Sep 2017 06:56:50 +0200 Subject: [PATCH 4/5] squash: use string template --- test/parallel/test-dgram-socket-buffer-size.js | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/test/parallel/test-dgram-socket-buffer-size.js b/test/parallel/test-dgram-socket-buffer-size.js index 40e70a45d81c2f..5c445eaea964be 100644 --- a/test/parallel/test-dgram-socket-buffer-size.js +++ b/test/parallel/test-dgram-socket-buffer-size.js @@ -77,12 +77,9 @@ function checkBufferSizeError(type, size) { const errorObj = { code: 'ERR_SOCKET_BUFFER_SIZE', type: Error, - message: 'Could not get or set buffer' + - ' size: Error: EINVAL: invalid argument,' + - ' uv_' + type + '_buffer_size' + message: `Could not get or set buffer size: Error: EINVAL: invalid argument, uv_${type}_buffer_size` // eslint-disable-line max-len }; - const functionName = 'set' + type.charAt(0).toUpperCase() + - type.slice(1) + 'BufferSize'; + const functionName = `set${type.charAt(0).toUpperCase()}${type.slice(1)}BufferSize`; // eslint-disable-line max-len const socket = dgram.createSocket('udp4'); socket.bind(common.mustCall(() => { assert.throws(() => { From b87360c9ff7776b87928ce8397e4cd0fa6a8c746 Mon Sep 17 00:00:00 2001 From: Daniel Bevenius Date: Mon, 18 Sep 2017 16:46:27 +0100 Subject: [PATCH 5/5] squash: remove eslint ignore rule --- test/parallel/test-dgram-socket-buffer-size.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/test/parallel/test-dgram-socket-buffer-size.js b/test/parallel/test-dgram-socket-buffer-size.js index 5c445eaea964be..7d6e2bfcc564ca 100644 --- a/test/parallel/test-dgram-socket-buffer-size.js +++ b/test/parallel/test-dgram-socket-buffer-size.js @@ -77,9 +77,11 @@ function checkBufferSizeError(type, size) { const errorObj = { code: 'ERR_SOCKET_BUFFER_SIZE', type: Error, - message: `Could not get or set buffer size: Error: EINVAL: invalid argument, uv_${type}_buffer_size` // eslint-disable-line max-len + message: 'Could not get or set buffer size: Error: EINVAL: ' + + `invalid argument, uv_${type}_buffer_size` }; - const functionName = `set${type.charAt(0).toUpperCase()}${type.slice(1)}BufferSize`; // eslint-disable-line max-len + const functionName = `set${type.charAt(0).toUpperCase()}${type.slice(1)}` + + 'BufferSize'; const socket = dgram.createSocket('udp4'); socket.bind(common.mustCall(() => { assert.throws(() => {