From 22d6f255e9248d0374f3f1b708a8dc2cc35108e3 Mon Sep 17 00:00:00 2001 From: dignifiedquire Date: Tue, 7 Jun 2016 21:11:51 +0200 Subject: [PATCH] fix: use length-prefixed-stream for messages for go interop --- package.json | 3 ++- src/network/index.js | 11 ++++++++--- test/network/network.node.js | 10 +++++++--- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index b30fa317..1bf62d66 100644 --- a/package.json +++ b/package.json @@ -57,6 +57,7 @@ "heap": "^0.2.6", "highland": "^3.0.0-beta.1", "ipfs-block": "^0.3.0", + "length-prefixed-stream": "^1.5.0", "lodash.isequalwith": "^4.2.0", "lodash.isundefined": "^3.0.1", "multihashes": "^0.2.2", @@ -66,4 +67,4 @@ "David Dias ", "Friedel Ziegelmayer " ] -} \ No newline at end of file +} diff --git a/src/network/index.js b/src/network/index.js index 4fc4fc65..55ed3a68 100644 --- a/src/network/index.js +++ b/src/network/index.js @@ -3,6 +3,7 @@ const bl = require('bl') const async = require('async') const debug = require('debug') +const lps = require('length-prefixed-stream') const Message = require('../message') const cs = require('../constants') @@ -47,7 +48,8 @@ module.exports = class Network { } _onConnection (conn) { - conn.pipe(bl((err, data) => { + const decode = lps.decode() + conn.pipe(decode).pipe(bl((err, data) => { conn.end() if (err) { return this.bitswap._receiveError(err) @@ -106,10 +108,13 @@ module.exports = class Network { return done(err) } - conn.write(msg.toProto()) conn.once('error', (err) => done(err)) conn.once('finish', done) - conn.end() + + const encode = lps.encode() + encode.pipe(conn) + encode.write(msg.toProto()) + encode.end() }) } } diff --git a/test/network/network.node.js b/test/network/network.node.js index 72482fdc..7aa6b032 100644 --- a/test/network/network.node.js +++ b/test/network/network.node.js @@ -8,6 +8,7 @@ const multiaddr = require('multiaddr') const expect = require('chai').expect const PeerBook = require('peer-book') const Block = require('ipfs-block') +const lps = require('length-prefixed-stream') const Network = require('../../src/network') const Message = require('../../src/message') @@ -148,10 +149,13 @@ describe('network', function () { } libp2pNodeA.dialByPeerInfo(peerInfoB, '/ipfs/bitswap/1.0.0', (err, conn) => { - const msgEncoded = msg.toProto() - conn.write(msgEncoded) - conn.end() expect(err).to.not.exist + + const msgEncoded = msg.toProto() + const enc = lps.encode() + enc.pipe(conn) + enc.write(msgEncoded) + enc.end() }) })