Skip to content

Commit 35b5ac6

Browse files
committed
Merge pull request libp2p#32 from diasdavid/tests/websockets-mania
fix dirty identify bug
2 parents a2084f0 + 2bd536e commit 35b5ac6

File tree

2 files changed

+59
-11
lines changed

2 files changed

+59
-11
lines changed

src/identify.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,9 @@ exports.exec = (rawConn, muxer, peerInfo, callback) => {
4242
var pbs = pbStream()
4343

4444
pbs.on('identify', (msg) => {
45-
peerInfo.multiaddr.addSafe(msg.observedAddr)
45+
if (msg.observedAddr.length > 0) {
46+
peerInfo.multiaddr.addSafe(msg.observedAddr)
47+
}
4648

4749
const peerId = Id.createFromPubKey(msg.publicKey)
4850
const otherPeerInfo = new Info(peerId)
@@ -60,7 +62,7 @@ exports.exec = (rawConn, muxer, peerInfo, callback) => {
6062
agentVersion: 'na',
6163
publicKey: peerInfo.id.pubKey,
6264
listenAddrs: peerInfo.multiaddrs.map((mh) => { return mh.buffer }),
63-
observedAddr: obsMultiaddr ? obsMultiaddr.buffer : null
65+
observedAddr: obsMultiaddr ? obsMultiaddr.buffer : new Buffer('')
6466
})
6567

6668
pbs.pipe(ds).pipe(pbs)
@@ -77,7 +79,9 @@ exports.handler = (peerInfo, swarm) => {
7779
var pbs = pbStream()
7880

7981
pbs.on('identify', function (msg) {
80-
peerInfo.multiaddr.addSafe(msg.observedAddr)
82+
if (msg.observedAddr.length > 0) {
83+
peerInfo.multiaddr.addSafe(msg.observedAddr)
84+
}
8185

8286
const peerId = Id.createFromPubKey(msg.publicKey)
8387
const conn = swarm.muxedConns[peerId.toB58String()].conn
@@ -90,7 +94,7 @@ exports.handler = (peerInfo, swarm) => {
9094
listenAddrs: peerInfo.multiaddrs.map(function (ma) {
9195
return ma.buffer
9296
}),
93-
observedAddr: obsMultiaddr ? obsMultiaddr.buffer : null
97+
observedAddr: obsMultiaddr ? obsMultiaddr.buffer : new Buffer('')
9498
})
9599
pbs.finalize()
96100
})

tests/swarm-test.js

Lines changed: 51 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -529,11 +529,17 @@ describe('high level API - with everything mixed all together!', function () {
529529
var peerB
530530
var swarmC // tcp+ws
531531
var peerC
532+
var swarmD // ws
533+
var peerD
534+
var swarmE // ws
535+
var peerE
532536

533537
before((done) => {
534538
peerA = new Peer()
535539
peerB = new Peer()
536540
peerC = new Peer()
541+
peerD = new Peer()
542+
peerE = new Peer()
537543

538544
// console.log('peer A', peerA.id.toB58String())
539545
// console.log('peer B', peerB.id.toB58String())
@@ -542,6 +548,8 @@ describe('high level API - with everything mixed all together!', function () {
542548
swarmA = new Swarm(peerA)
543549
swarmB = new Swarm(peerB)
544550
swarmC = new Swarm(peerC)
551+
swarmD = new Swarm(peerD)
552+
swarmE = new Swarm(peerE)
545553

546554
done()
547555
})
@@ -552,18 +560,20 @@ describe('high level API - with everything mixed all together!', function () {
552560
swarmA.close(closed)
553561
swarmB.close(closed)
554562
swarmC.close(closed)
563+
swarmD.close(closed)
564+
swarmE.close(closed)
555565

556566
function closed () {
557-
if (++counter === 3) {
567+
if (++counter === 4) {
558568
done()
559569
}
560570
}
561571
})
562572

563573
it('add tcp', (done) => {
564-
peerA.multiaddr.add(multiaddr('/ip4/127.0.0.1/tcp/9011'))
565-
peerB.multiaddr.add(multiaddr('/ip4/127.0.0.1/tcp/9021'))
566-
peerC.multiaddr.add(multiaddr('/ip4/127.0.0.1/tcp/9031'))
574+
peerA.multiaddr.add(multiaddr('/ip4/127.0.0.1/tcp/0'))
575+
peerB.multiaddr.add(multiaddr('/ip4/127.0.0.1/tcp/0'))
576+
peerC.multiaddr.add(multiaddr('/ip4/127.0.0.1/tcp/0'))
567577

568578
swarmA.transport.add('tcp', new TCP())
569579
swarmA.transport.listen('tcp', {}, null, ready)
@@ -586,19 +596,27 @@ describe('high level API - with everything mixed all together!', function () {
586596
it.skip('add utp', (done) => {})
587597

588598
it('add websockets', (done) => {
589-
peerB.multiaddr.add(multiaddr('/ip4/127.0.0.1/tcp/9022/websockets'))
590-
peerC.multiaddr.add(multiaddr('/ip4/127.0.0.1/tcp/9032/websockets'))
599+
peerB.multiaddr.add(multiaddr('/ip4/127.0.0.1/tcp/9012/websockets'))
600+
peerC.multiaddr.add(multiaddr('/ip4/127.0.0.1/tcp/9022/websockets'))
601+
peerD.multiaddr.add(multiaddr('/ip4/127.0.0.1/tcp/9032/websockets'))
602+
peerE.multiaddr.add(multiaddr('/ip4/127.0.0.1/tcp/9042/websockets'))
591603

592604
swarmB.transport.add('ws', new WebSockets())
593605
swarmB.transport.listen('ws', {}, null, ready)
594606

595607
swarmC.transport.add('ws', new WebSockets())
596608
swarmC.transport.listen('ws', {}, null, ready)
597609

610+
swarmD.transport.add('ws', new WebSockets())
611+
swarmD.transport.listen('ws', {}, null, ready)
612+
613+
swarmE.transport.add('ws', new WebSockets())
614+
swarmE.transport.listen('ws', {}, null, ready)
615+
598616
var counter = 0
599617

600618
function ready () {
601-
if (++counter === 2) {
619+
if (++counter === 4) {
602620
done()
603621
}
604622
}
@@ -608,9 +626,15 @@ describe('high level API - with everything mixed all together!', function () {
608626
swarmA.connection.addStreamMuxer(spdy)
609627
swarmB.connection.addStreamMuxer(spdy)
610628
swarmC.connection.addStreamMuxer(spdy)
629+
swarmD.connection.addStreamMuxer(spdy)
630+
swarmE.connection.addStreamMuxer(spdy)
631+
611632
swarmA.connection.reuse()
612633
swarmB.connection.reuse()
613634
swarmC.connection.reuse()
635+
swarmD.connection.reuse()
636+
swarmE.connection.reuse()
637+
614638
done()
615639
})
616640

@@ -631,6 +655,26 @@ describe('high level API - with everything mixed all together!', function () {
631655
})
632656
})
633657

658+
it('dial from ws to ws', (done) => {
659+
swarmE.handle('/abacaxi/1.0.0', (conn) => {
660+
conn.pipe(conn)
661+
})
662+
663+
swarmD.dial(peerE, '/abacaxi/1.0.0', (err, conn) => {
664+
expect(err).to.not.exist
665+
expect(Object.keys(swarmD.muxedConns).length).to.equal(1)
666+
667+
conn.end()
668+
conn.on('data', () => {}) // let it flow.. let it flooooow
669+
conn.on('end', () => {
670+
setTimeout(() => {
671+
expect(Object.keys(swarmE.muxedConns).length).to.equal(1)
672+
done()
673+
}, 1000)
674+
})
675+
})
676+
})
677+
634678
it('dial from tcp to tcp+ws (returned conn)', (done) => {
635679
swarmB.handle('/grapes/1.0.0', (conn) => {
636680
conn.pipe(conn)

0 commit comments

Comments
 (0)