1'use strict'; 2const common = require('../common'); 3if (!common.hasCrypto) 4 common.skip('missing crypto'); 5const assert = require('assert'); 6const fixtures = require('../common/fixtures'); 7const tls = require('tls'); 8 9const iter = 10; 10 11const server = tls.createServer({ 12 key: fixtures.readKey('agent2-key.pem'), 13 cert: fixtures.readKey('agent2-cert.pem') 14}, common.mustCall((socket) => { 15 let str = ''; 16 socket.setEncoding('utf-8'); 17 socket.on('data', (chunk) => { str += chunk; }); 18 19 socket.on('end', common.mustCall(() => { 20 assert.strictEqual(str, 'a'.repeat(iter - 1)); 21 server.close(); 22 })); 23})); 24 25server.listen(0, common.mustCall(() => { 26 const client = tls.connect({ 27 port: server.address().port, 28 rejectUnauthorized: false 29 }, common.mustCall(() => { 30 assert.strictEqual(client.bufferSize, 0); 31 32 for (let i = 1; i < iter; i++) { 33 client.write('a'); 34 assert.strictEqual(client.bufferSize, i); 35 } 36 37 client.on('finish', common.mustCall(() => { 38 assert.strictEqual(client.bufferSize, 0); 39 })); 40 41 client.end(); 42 })); 43})); 44