@@ -62,11 +62,17 @@ function SocketPeerServer (opts) {
62
62
var peersWaiting = Object . create ( null ) ;
63
63
var connections = Object . create ( null ) ;
64
64
65
- function closeConnection ( pairCode ) {
65
+ function closeConnection ( pairCode , filter ) {
66
+ let filtered = false ;
66
67
connections [ pairCode ] . forEach ( conn => {
67
- conn . peer = null ;
68
+ filtered = filter ( conn ) ;
69
+ if ( filtered ) {
70
+ conn . peer = null ;
71
+ }
68
72
} ) ;
69
- connections [ pairCode ] = null ;
73
+ if ( filtered ) {
74
+ connections [ pairCode ] = null ;
75
+ }
70
76
}
71
77
72
78
function sendMessage ( type , data ) {
@@ -100,8 +106,13 @@ function SocketPeerServer (opts) {
100
106
console . log ( '[pair] Received pairCode:' , pairCode ) ;
101
107
102
108
if ( connections [ pairCode ] ) {
103
- client . sendMessage ( 'busy' ) ;
104
- return ;
109
+ client . sendMessage ( 'warning' , {
110
+ message : '`pairCode` "' + pairCode + '" is already in use' ,
111
+ pairCode : pairCode
112
+ } ) ;
113
+ closeConnection ( pairCode , function ( clientToCheck ) {
114
+ return clientToCheck !== client ;
115
+ } ) ;
105
116
}
106
117
107
118
client . pairCode = pairCode ;
@@ -143,14 +154,14 @@ function SocketPeerServer (opts) {
143
154
} ) ;
144
155
145
156
client . on ( 'close' , ( ) => {
146
- if ( client . pairCode in peersWaiting &&
147
- peersWaiting [ client . pairCode ] === client ) {
148
- peersWaiting [ client . pairCode ] = null ;
157
+ const pairCode = client . pairCode ;
158
+ if ( pairCode in peersWaiting && peersWaiting [ pairCode ] === client ) {
159
+ peersWaiting [ pairCode ] = null ;
149
160
}
150
161
151
162
if ( client . peer ) {
152
- peersWaiting [ client . pairCode ] = client . peer ;
153
- closeConnection ( client . pairCode ) ;
163
+ peersWaiting [ pairCode ] = client . peer ;
164
+ closeConnection ( pairCode ) ;
154
165
}
155
166
} ) ;
156
167
} ) ;
0 commit comments