summaryrefslogtreecommitdiff
path: root/test/parallel/test-dgram-create-socket-handle-fd.js
diff options
context:
space:
mode:
authorOuyang Yadong <oyydoibh@gmail.com>2018-07-29 22:41:11 +0800
committerMatteo Collina <hello@matteocollina.com>2018-08-06 11:05:51 +0200
commit2bea9cefbc10ed1dd497bbae61c07d971da287dd (patch)
tree02bfcbc3fcf39fe7524f9271762617f23e107925 /test/parallel/test-dgram-create-socket-handle-fd.js
parent214844ea4e561b0f77e97643d28b251cdc574089 (diff)
downloadandroid-node-v8-2bea9cefbc10ed1dd497bbae61c07d971da287dd.tar.gz
android-node-v8-2bea9cefbc10ed1dd497bbae61c07d971da287dd.tar.bz2
android-node-v8-2bea9cefbc10ed1dd497bbae61c07d971da287dd.zip
dgram: implement socket.bind({ fd })
dgram: Implement binding an existing `fd`. Allow pass a `fd` property to `socket.bind()` in dgram. src: Add `UDPWrap::Open` PR-URL: https://github.com/nodejs/node/pull/21745 Fixes: https://github.com/nodejs/node/issues/14961 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Diffstat (limited to 'test/parallel/test-dgram-create-socket-handle-fd.js')
-rw-r--r--test/parallel/test-dgram-create-socket-handle-fd.js42
1 files changed, 42 insertions, 0 deletions
diff --git a/test/parallel/test-dgram-create-socket-handle-fd.js b/test/parallel/test-dgram-create-socket-handle-fd.js
new file mode 100644
index 0000000000..ff507b6ec5
--- /dev/null
+++ b/test/parallel/test-dgram-create-socket-handle-fd.js
@@ -0,0 +1,42 @@
+'use strict';
+const common = require('../common');
+if (common.isWindows)
+ common.skip('Does not support binding fd on Windows');
+
+const assert = require('assert');
+const dgram = require('dgram');
+const { UDP } = process.binding('udp_wrap');
+const { TCP, constants } = process.binding('tcp_wrap');
+const _createSocketHandle = dgram._createSocketHandle;
+
+// Return a negative number if the "existing fd" is invalid.
+{
+ const err = _createSocketHandle(common.localhostIPv4, 0, 'udp4', 42);
+ assert(err < 0);
+}
+
+// Return a negative number if the type of fd is not "UDP".
+{
+ // Create a handle with fd.
+ const rawHandle = new UDP();
+ const err = rawHandle.bind(common.localhostIPv4, 0, 0);
+ assert(err >= 0, String(err));
+ assert.notStrictEqual(rawHandle.fd, -1);
+
+ const handle = _createSocketHandle(null, 0, 'udp4', rawHandle.fd);
+ assert(handle instanceof UDP);
+ assert.strictEqual(typeof handle.fd, 'number');
+ assert(handle.fd > 0);
+}
+
+// Create a bound handle.
+{
+ const rawHandle = new TCP(constants.SOCKET);
+ const err = rawHandle.listen();
+ assert(err >= 0, String(err));
+ assert.notStrictEqual(rawHandle.fd, -1);
+
+ const handle = _createSocketHandle(null, 0, 'udp4', rawHandle.fd);
+ assert(handle < 0);
+ rawHandle.close();
+}