// Flags: --no-warnings 'use strict'; const common = require('../common'); if (!common.hasQuic) common.skip('missing quic'); // Test that .connect() can be called multiple times with different servers. const assert = require('assert'); const { createQuicSocket } = require('net'); const { key, cert, ca } = require('../common/quic'); const Countdown = require('../common/countdown'); const { once } = require('events'); const options = { key, cert, ca, alpn: 'meow' }; const kCount = 3; const servers = []; const client = createQuicSocket({ client: options }); const countdown = new Countdown(kCount, () => { client.close(); }); async function connect(server, client) { const req = await client.connect({ address: 'localhost', port: server.endpoints[0].address.port }); req.on('stream', common.mustCall((stream) => { stream.on('data', common.mustCall( (chk) => assert.strictEqual(chk.toString(), 'Hi!'))); stream.on('end', common.mustCall(() => { server.close(); req.close(); countdown.dec(); })); })); await once(req, 'close'); } (async function() { for (let i = 0; i < kCount; i++) { const server = createQuicSocket({ server: options }); server.on('session', common.mustCall(async (session) => { const stream = await session.openStream({ halfOpen: true }); stream.end('Hi!'); })); server.on('close', common.mustCall()); servers.push(server); } await Promise.all(servers.map((server) => server.listen())); for (let i = 0; i < kCount; i++) await connect(servers[i], client); })().then(common.mustCall());