From a19e68af68c18d867da0d65426aa7159fe9b9b2e Mon Sep 17 00:00:00 2001 From: mkg20001 Date: Tue, 27 Feb 2018 20:04:11 +0100 Subject: [PATCH] fix: #68 --- package.json | 1 + src/listener.js | 25 ++++++++++++++++++++++++- test/node.js | 10 +++++----- 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index b274175..3c542cc 100644 --- a/package.json +++ b/package.json @@ -51,6 +51,7 @@ "multiaddr": "^5.0.0", "pre-commit": "^1.2.2", "pull-goodbye": "0.0.2", + "pull-reader": "^1.2.9", "pull-stream": "^3.6.7" }, "contributors": [ diff --git a/src/listener.js b/src/listener.js index cf67b10..159173c 100644 --- a/src/listener.js +++ b/src/listener.js @@ -4,9 +4,32 @@ const Connection = require('interface-connection').Connection const includes = require('lodash.includes') const multiaddr = require('multiaddr') const os = require('os') +const pull = require('pull-stream') function noop () {} +function handle (data) { + if (Buffer.isBuffer(data)) return data + try { + return Buffer.from(data) + } catch (e) { + return Buffer.from('') + } +} + +function safe (conn) { + return { + sink: pull( + pull.map(handle), + conn.sink + ), + source: pull( + conn.source, + pull.map(handle) + ) + } +} + const createServer = require('pull-ws/server') || noop module.exports = (options, handler) => { @@ -16,7 +39,7 @@ module.exports = (options, handler) => { return callback(null, []) } - handler(new Connection(socket)) + handler(new Connection(safe(socket))) }) let listeningMultiaddr diff --git a/test/node.js b/test/node.js index 1464dd1..570d7f7 100644 --- a/test/node.js +++ b/test/node.js @@ -172,11 +172,11 @@ describe('dial', () => { const conn = ws.dial(ma) const s = goodbye({ - source: pull.values(['hey']), + source: pull.values([Buffer.from('hey')]), sink: pull.collect((err, result) => { expect(err).to.not.exist() - expect(result).to.be.eql(['hey']) + expect(result).to.be.eql([Buffer.from('hey')]) done() }) }) @@ -193,11 +193,11 @@ describe('dial', () => { const conn = ws.dial(ma) const s = goodbye({ - source: pull.values(['hey']), + source: pull.values([Buffer.from('hey')]), sink: pull.collect((err, result) => { expect(err).to.not.exist() - expect(result).to.be.eql(['hey']) + expect(result).to.be.eql([Buffer.from('hey')]) done() }) }) @@ -221,7 +221,7 @@ describe('dont crash', () => { pull(conn, reader) // simulate mss-listener }) listener.listen(ma, done) - reader.read(1, console.log) + reader.read(1, err => err ? done(err) : false) }) afterEach((done) => {