Skip to content

Commit ecd8594

Browse files
committed
WIP: standardjs linting, tracking down missing swarm error
1 parent 3bfd194 commit ecd8594

File tree

1 file changed

+71
-94
lines changed

1 file changed

+71
-94
lines changed

server/services/attachWS/index.js

Lines changed: 71 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
const WebSocketServer = require("ws").Server
1+
const WebSocketServer = require('ws').Server
22
const debug = require('debug')('bittorrent-tracker:server')
33

44
const common = require('../../../lib/common')
55

6-
const parseWebSocketRequest = require("./parseWebsocketRequest")
7-
const attachHttpServer = require("../attachHttp")
6+
const parseWebSocketRequest = require('./parseWebsocketRequest')
7+
const attachHttpServer = require('../attachHttp')
88

99
const SDP_TRICKLE_REGEX = /a=ice-options:trickle\s\n/
1010

11-
function setupHttpService(server, onListening) {
11+
function setupHttpService (server, onListening) {
1212
if (server.http) return server.http
1313
else {
1414
attachHttpServer(server, onListening)
@@ -18,19 +18,19 @@ function setupHttpService(server, onListening) {
1818
// Return 404 for all other request types
1919
const notFound = (req, res) => {
2020
res.statusCode = 404
21-
res.end("404 Not Found")
21+
res.end('404 Not Found')
2222
}
2323

24-
server.http.on("request", notFound)
24+
server.http.on('request', notFound)
2525
}
2626
}
2727

28-
function setupWebSocketServer(server) {
28+
function setupWebSocketServer (server) {
2929
const { onError } = server
3030
const options = {
3131
server: server.http,
3232
perMessageDeflate: false,
33-
clientTracking: false,
33+
clientTracking: false
3434
}
3535

3636
const ws = new WebSocketServer(options)
@@ -40,24 +40,16 @@ function setupWebSocketServer(server) {
4040

4141
socket.peerId = null // as hex
4242
socket.infoHashes = [] // swarms that server socket is participating in
43-
socket.onSend = (err) => {
44-
onWebSocketSend(socket, err)
45-
}
43+
socket.onSend = (err) => onWebSocketSend(socket, err)
4644

47-
socket.onMessageBound = (params) => {
48-
onWebSocketRequest(socket, opts, params)
49-
}
50-
socket.on("message", socket.onMessageBound)
45+
socket.onMessageBound = (params) => onWebSocketRequest(socket, opts, params)
46+
socket.on('message', socket.onMessageBound)
5147

52-
socket.onErrorBound = (err) => {
53-
onWebSocketError(socket, err)
54-
}
55-
socket.on("error", socket.onErrorBound)
48+
socket.onErrorBound = (err) => onWebSocketError(socket, err)
49+
socket.on('error', socket.onErrorBound)
5650

57-
socket.onCloseBound = () => {
58-
onWebSocketClose(socket)
59-
}
60-
socket.on("close", socket.onCloseBound)
51+
socket.onCloseBound = () => onWebSocketClose(socket)
52+
socket.on('close', socket.onCloseBound)
6153
}
6254

6355
const onWebSocketRequest = (socket, opts, params) => {
@@ -66,14 +58,14 @@ function setupWebSocketServer(server) {
6658
} catch (err) {
6759
socket.send(
6860
JSON.stringify({
69-
"failure reason": err.message,
61+
'failure reason': err.message
7062
}),
7163
socket.onSend
7264
)
7365

7466
// even though it's an error for the client, it's just a warning for the server.
7567
// don't crash the server because a client sent bad data :)
76-
server.emit("warning", err)
68+
server.emit('warning', err)
7769
return
7870
}
7971

@@ -85,22 +77,22 @@ function setupWebSocketServer(server) {
8577
socket.send(
8678
JSON.stringify({
8779
action:
88-
params.action === common.ACTIONS.ANNOUNCE ? "announce" : "scrape",
89-
"failure reason": err.message,
90-
info_hash: common.hexToBinary(params.info_hash),
80+
params.action === common.ACTIONS.ANNOUNCE ? 'announce' : 'scrape',
81+
'failure reason': err.message,
82+
info_hash: common.hexToBinary(params.info_hash)
9183
}),
9284
socket.onSend
9385
)
9486

95-
server.emit("warning", err)
87+
server.emit('warning', err)
9688
return
9789
}
9890

9991
response.action =
100-
params.action === common.ACTIONS.ANNOUNCE ? "announce" : "scrape"
92+
params.action === common.ACTIONS.ANNOUNCE ? 'announce' : 'scrape'
10193

10294
let peers
103-
if (response.action === "announce") {
95+
if (response.action === 'announce') {
10496
peers = response.peers
10597
delete response.peers
10698

@@ -118,50 +110,35 @@ function setupWebSocketServer(server) {
118110
if (!params.answer) {
119111
socket.send(JSON.stringify(response), socket.onSend)
120112
debug(
121-
"sent response %s to %s",
113+
'sent response %s to %s',
122114
JSON.stringify(response),
123115
params.peer_id
124116
)
125117
}
126118

127119
if (Array.isArray(params.offers)) {
128-
debug("got %s offers from %s", params.offers.length, params.peer_id)
129-
debug("got %s peers from swarm %s", peers.length, params.info_hash)
130-
131-
const gotSwarm = swarm => {
132-
if (server.destroyed) return
133-
if (!swarm) {
134-
return server.emit(
135-
"warning",
136-
new Error("no swarm with that `info_hash`")
137-
)
120+
debug('got %s offers from %s', params.offers.length, params.peer_id)
121+
debug('got %s peers from swarm %s', peers.length, params.info_hash)
122+
123+
peers.forEach((peer, i) => {
124+
const { sdp } = (params.offers && params.offers[i] && params.offers[i].offer) || {}
125+
const isTrickleSdp = SDP_TRICKLE_REGEX.test(sdp)
126+
if (isTrickleSdp) {
127+
swarm.offers.set(params.offers[i].offer_id, peer.peerId)
138128
}
139129

140-
peers.forEach((peer, i) => {
141-
const { sdp } = params.offers && params.offers[i] && params.offers[i].offer || {}
142-
const isTrickleSdp = SDP_TRICKLE_REGEX.test(sdp)
143-
if (isTrickleSdp) {
144-
swarm.offers.set(params.offers[i].offer_id, peer.peerId)
145-
}
146-
147-
peer.socket.send(
148-
JSON.stringify({
149-
action: "announce",
150-
offer: params.offers[i].offer,
151-
offer_id: params.offers[i].offer_id,
152-
peer_id: common.hexToBinary(params.peer_id),
153-
info_hash: common.hexToBinary(params.info_hash),
154-
}),
155-
peer.socket.onSend
156-
)
157-
debug("sent offer to %s from %s", peer.peerId, params.peer_id)
158-
})
159-
}
160-
161-
server.getSwarm(params.info_hash)
162-
.then()
163-
.catch(err => server.emit("warning", err))
164-
130+
peer.socket.send(
131+
JSON.stringify({
132+
action: 'announce',
133+
offer: params.offers[i].offer,
134+
offer_id: params.offers[i].offer_id,
135+
peer_id: common.hexToBinary(params.peer_id),
136+
info_hash: common.hexToBinary(params.info_hash)
137+
}),
138+
peer.socket.onSend
139+
)
140+
debug('sent offer to %s from %s', peer.peerId, params.peer_id)
141+
})
165142
}
166143

167144
const done = () => {
@@ -173,43 +150,43 @@ function setupWebSocketServer(server) {
173150

174151
if (params.answer) {
175152
debug(
176-
"got answer %s from %s",
153+
'got answer %s from %s',
177154
JSON.stringify(params.answer),
178155
params.peer_id
179156
)
180157

181158
server.getSwarm(params.info_hash)
182-
.then(gotSwarm)
183-
.catch(err => server.emit("warning", err))
159+
.then(gotSwarm)
160+
.catch(err => server.emit('warning', err))
184161

185162
const gotSwarm = swarm => {
186163
if (server.destroyed) return
187164
if (!swarm) {
188165
return server.emit(
189-
"warning",
190-
new Error("no swarm with that `info_hash`")
166+
'warning',
167+
new Error('no swarm with that `info_hash`')
191168
)
192169
}
193170
// Mark the destination peer as recently used in cache
194171
const toPeer = swarm.peers.get(params.to_peer_id)
195172
if (!toPeer) {
196173
return server.emit(
197-
"warning",
198-
new Error("no peer with that `to_peer_id`")
174+
'warning',
175+
new Error('no peer with that `to_peer_id`')
199176
)
200177
}
201178

202179
toPeer.socket.send(
203180
JSON.stringify({
204-
action: "announce",
181+
action: 'announce',
205182
answer: params.answer,
206183
offer_id: params.offer_id,
207184
peer_id: common.hexToBinary(params.peer_id),
208-
info_hash: common.hexToBinary(params.info_hash),
185+
info_hash: common.hexToBinary(params.info_hash)
209186
}),
210187
toPeer.socket.onSend
211188
)
212-
debug("sent answer to %s from %s", toPeer.peerId, params.peer_id)
189+
debug('sent answer to %s from %s', toPeer.peerId, params.peer_id)
213190

214191
done()
215192
}
@@ -224,7 +201,7 @@ function setupWebSocketServer(server) {
224201
}
225202

226203
const onWebSocketClose = (socket) => {
227-
debug("websocket close %s", socket.peerId)
204+
debug('websocket close %s', socket.peerId)
228205
socket.destroyed = true
229206

230207
if (socket.peerId) {
@@ -233,10 +210,10 @@ function setupWebSocketServer(server) {
233210
if (swarm) {
234211
swarm.announce(
235212
{
236-
type: "ws",
237-
event: "stopped",
213+
type: 'ws',
214+
event: 'stopped',
238215
numwant: 0,
239-
peer_id: socket.peerId,
216+
peer_id: socket.peerId
240217
},
241218
noop
242219
)
@@ -246,30 +223,30 @@ function setupWebSocketServer(server) {
246223

247224
// ignore all future errors
248225
socket.onSend = noop
249-
socket.on("error", noop)
226+
socket.on('error', noop)
250227

251228
socket.peerId = null
252229
socket.infoHashes = null
253230

254-
if (typeof socket.onMessageBound === "function") {
255-
socket.removeListener("message", socket.onMessageBound)
231+
if (typeof socket.onMessageBound === 'function') {
232+
socket.removeListener('message', socket.onMessageBound)
256233
}
257234
socket.onMessageBound = null
258235

259-
if (typeof socket.onErrorBound === "function") {
260-
socket.removeListener("error", socket.onErrorBound)
236+
if (typeof socket.onErrorBound === 'function') {
237+
socket.removeListener('error', socket.onErrorBound)
261238
}
262239
socket.onErrorBound = null
263240

264-
if (typeof socket.onCloseBound === "function") {
265-
socket.removeListener("close", socket.onCloseBound)
241+
if (typeof socket.onCloseBound === 'function') {
242+
socket.removeListener('close', socket.onCloseBound)
266243
}
267244
socket.onCloseBound = null
268245
}
269246

270247
const onWebSocketError = (socket, err) => {
271-
debug("websocket error %s", err.message || err)
272-
server.emit("warning", err)
248+
debug('websocket error %s', err.message || err)
249+
server.emit('warning', err)
273250
onWebSocketClose(socket)
274251
}
275252

@@ -281,17 +258,17 @@ function setupWebSocketServer(server) {
281258
}
282259

283260
ws.address = () => server.http.address()
284-
ws.on("connection", onConnection)
285-
ws.on("error", (err) => onError(err))
261+
ws.on('connection', onConnection)
262+
ws.on('error', (err) => onError(err))
286263

287264
server.ws = ws
288265
}
289266

290-
function createWebSocketServer(server, onListening) {
267+
function createWebSocketServer (server, onListening) {
291268
setupHttpService(server, onListening)
292269
setupWebSocketServer(server)
293270
}
294271

295272
module.exports = createWebSocketServer
296273

297-
function noop() { }
274+
function noop () { }

0 commit comments

Comments
 (0)