This repository was archived by the owner on Aug 23, 2019. It is now read-only.
File tree Expand file tree Collapse file tree 2 files changed +32
-1
lines changed Expand file tree Collapse file tree 2 files changed +32
-1
lines changed Original file line number Diff line number Diff line change @@ -80,7 +80,11 @@ module.exports = function (swarm) {
8080 const createListeners = multiaddrs . map ( ( ma ) => {
8181 return ( cb ) => {
8282 const listener = transport . createListener ( handler )
83+
84+ listener . once ( 'error' , cb )
85+
8386 listener . listen ( ma , ( ) => {
87+ listener . removeListener ( 'error' , cb )
8488 listener . getAddrs ( ( err , addrs ) => {
8589 if ( err ) {
8690 return cb ( err )
@@ -93,7 +97,11 @@ module.exports = function (swarm) {
9397 }
9498 } )
9599
96- parallel ( createListeners , ( ) => {
100+ parallel ( createListeners , ( err ) => {
101+ if ( err ) {
102+ return callback ( err )
103+ }
104+
97105 // cause we can listen on port 0 or 0.0.0.0
98106 swarm . _peerInfo . multiaddr . replace ( multiaddrs , freshMultiaddrs )
99107 callback ( )
Original file line number Diff line number Diff line change @@ -186,4 +186,27 @@ describe('transport - tcp', function () {
186186 swarm . close ( done )
187187 }
188188 } )
189+
190+ it ( 'handles EADDRINUSE error when trying to listen' , ( done ) => {
191+ let swarm1 , swarm2
192+ swarm1 = new Swarm ( peerA )
193+ swarm1 . transport . add ( 'tcp' , new TCP ( ) )
194+ swarm1 . transport . listen ( 'tcp' , { } , ( conn ) => {
195+ pull ( conn , conn )
196+ } , ( ) => {
197+ // Add in-use (peerA) address to peerB
198+ peerB . multiaddr . add ( multiaddr ( '/ip4/127.0.0.1/tcp/9888' ) )
199+ swarm2 = new Swarm ( peerB )
200+ swarm2 . transport . add ( 'tcp' , new TCP ( ) )
201+ swarm2 . transport . listen ( 'tcp' , { } , ( conn ) => {
202+ pull ( conn , conn )
203+ } , ready )
204+ } )
205+
206+ function ready ( err ) {
207+ expect ( err ) . to . exist
208+ expect ( err . code ) . to . equal ( 'EADDRINUSE' )
209+ swarm1 . close ( ( ) => swarm2 . close ( done ) )
210+ }
211+ } )
189212} )
You can’t perform that action at this time.
0 commit comments