Repository navigation
tls throws when working with JSStreams #12716
Copy link
Copy link
Closed
Labels
tlsIssues and PRs related to the tls subsystem.Issues and PRs related to the tls subsystem.
Description
Activity
- addedtlsIssues and PRs related to the tls subsystem.Issues and PRs related to the tls subsystem.
on Apr 28, 2017 Workaround
Create a unix socket or windows pipe just for the sake of getting that fd so that the tls module can do its binary magic:
https://git.daplie.com/Daplie/socket-pair
'use strict'; var net = require('net'); var tls = require('tls'); // just a simple wrapper around a server and socket to create both of the necessary halves // https://git.daplie.com/Daplie/socket-pair/blob/master/lib/socket-pair.js 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 = require('socket-pair').create(function (err, reader) { 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')); // this "hangs", but it if you attach a `data` event you can see that // the "reader" was written back to with the handshake response });
I think this has been fixed in b23d414 – can you confirm that?
Using the example code that I provided above my findings are:
FAILURE in
node v6.11.1 LTSSUCCESS in
node v8.2.1
Metadata
Metadata
Assignees
Labels
tlsIssues and PRs related to the tls subsystem.Issues and PRs related to the tls subsystem.
Version: v7.7.4
Platform: Darwin
Subsystem: tls
Here's the lovely error:
And here's how you can too:
and since all of my issues go to you anyway, might as well:
cc/ @indutny
May be related to:
net.Sockets #1046