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) {
80
80
const createListeners = multiaddrs . map ( ( ma ) => {
81
81
return ( cb ) => {
82
82
const listener = transport . createListener ( handler )
83
+
84
+ listener . once ( 'error' , cb )
85
+
83
86
listener . listen ( ma , ( ) => {
87
+ listener . removeListener ( 'error' , cb )
84
88
listener . getAddrs ( ( err , addrs ) => {
85
89
if ( err ) {
86
90
return cb ( err )
@@ -93,7 +97,11 @@ module.exports = function (swarm) {
93
97
}
94
98
} )
95
99
96
- parallel ( createListeners , ( ) => {
100
+ parallel ( createListeners , ( err ) => {
101
+ if ( err ) {
102
+ return callback ( err )
103
+ }
104
+
97
105
// cause we can listen on port 0 or 0.0.0.0
98
106
swarm . _peerInfo . multiaddr . replace ( multiaddrs , freshMultiaddrs )
99
107
callback ( )
Original file line number Diff line number Diff line change @@ -186,4 +186,27 @@ describe('transport - tcp', function () {
186
186
swarm . close ( done )
187
187
}
188
188
} )
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
+ } )
189
212
} )
You can’t perform that action at this time.
0 commit comments