%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
'use strict'; const common = require('../common'); // This test verifies that `tls.connect()` honors the `allowHalfOpen` option. if (!common.hasCrypto) common.skip('missing crypto'); const assert = require('assert'); const fixtures = require('../common/fixtures'); const tls = require('tls'); { const socket = tls.connect({ port: 42, lookup() {} }); assert.strictEqual(socket.allowHalfOpen, false); } { const socket = tls.connect({ port: 42, allowHalfOpen: false, lookup() {} }); assert.strictEqual(socket.allowHalfOpen, false); } const server = tls.createServer({ key: fixtures.readKey('agent1-key.pem'), cert: fixtures.readKey('agent1-cert.pem'), }, common.mustCall((socket) => { server.close(); let message = ''; socket.setEncoding('utf8'); socket.on('data', (chunk) => { message += chunk; if (message === 'Hello') { socket.end(message); message = ''; } }); socket.on('end', common.mustCall(() => { assert.strictEqual(message, 'Bye'); })); })); server.listen(0, common.mustCall(() => { const socket = tls.connect({ port: server.address().port, rejectUnauthorized: false, allowHalfOpen: true, }, common.mustCall(() => { let message = ''; socket.on('data', (chunk) => { message += chunk; }); socket.on('end', common.mustCall(() => { assert.strictEqual(message, 'Hello'); setTimeout(() => { assert(socket.writable); assert(socket.write('Bye')); socket.end(); }, 50); })); socket.write('Hello'); })); socket.setEncoding('utf8'); }));