1'use strict'; 2 3const common = require('../common'); 4 5if (!common.hasCrypto) 6 common.skip('missing crypto'); 7 8const https = require('https'); 9const http = require('http'); 10const net = require('net'); 11const assert = require('assert'); 12const tls = require('tls'); 13const { readKey } = require('../common/fixtures'); 14 15function request(socket) { 16 socket.write('GET / HTTP/1.1\r\nConnection: keep-alive\r\n\r\n\r\n'); 17} 18 19// https options 20const httpsOptions = { 21 key: readKey('agent1-key.pem'), 22 cert: readKey('agent1-cert.pem') 23}; 24 25const server = https.createServer(httpsOptions, common.mustCall((req, res) => { 26 res.end('ok'); 27})); 28 29server.on('dropRequest', common.mustCall((request, socket) => { 30 assert.strictEqual(request instanceof http.IncomingMessage, true); 31 assert.strictEqual(socket instanceof net.Socket, true); 32 server.close(); 33})); 34 35server.listen(0, common.mustCall(() => { 36 const socket = tls.connect( 37 server.address().port, 38 { 39 rejectUnauthorized: false 40 }, 41 common.mustCall(() => { 42 request(socket); 43 request(socket); 44 socket.on('error', common.mustNotCall()); 45 socket.on('data', common.mustCallAtLeast()); 46 socket.on('close', common.mustCall()); 47 }) 48 ); 49})); 50 51server.maxRequestsPerSocket = 1; 52