Closed
Description
Version: v7.7.4
Platform: Darwin
Subsystem: tls
Here's the lovely error:
Assertion failed: (uv__stream_fd(stream) >= 0), function uv_read_start, file ../deps/uv/src/unix/stream.c, line 1545.
And here's how you can too:
'use strict';
var net = require('net');
var tls = require('tls');
// just a simple wrapper around a duplex to create both halves of a socket - very very simple
// https://github.com/indutny/stream-pair/blob/master/lib/stream-pair.js
var streamPair = require('stream-pair');
var netServer = net.createServer(handleTcp);
// just some certs so that it's easy to test all this
var tlsOptions = require('localhost.daplie.me-certificates').merge({});
var tlsServer = tls.createServer(tlsOptions, handleTls);
function handleTcp(conn) {
tlsServer.emit('connection', conn);
}
function handleTls(conn) {
conn.on('data', function (chunk) {
console.log(chunk.toString('utf8'));
});
}
var writer = streamPair.create();
var reader = writer.other;
netServer.emit('connection', reader);
// generated in this way
// nc -l 3000 > /tmp/sni.bin
// https://localhost.daplie.me:3000/
// hexdump -ve '1/1 "%.2x"' /tmp/sni.bin
var sni = '16030100ce010000ca03032d4ad3b5daf224a8465309487ed334c91de34c05ca5bf1c042ef54c510aadea80000202a2ac02bc02fc02cc030cca9cca8cc14cc13c013c014009c009d002f0035000a01000081dada0000ff010001000000001800160000136c6f63616c686f73742e6461706c69652e6d650017000000230000000d00140012040308040401050308050501080606010201000500050100000000001200000010000e000c02683208687474702f312e3175500000000b00020100000a000a00084a4a001d00170018baba000100';
writer.write(Buffer.from(sni, 'hex'));
and since all of my issues go to you anyway, might as well:
cc/ @indutny
May be related to: