Skip to content

Commit bf1d382

Browse files
committed
http tracker server: error on missing params
1 parent bf30085 commit bf1d382

File tree

2 files changed

+9
-8
lines changed

2 files changed

+9
-8
lines changed

server.js

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -114,21 +114,22 @@ Server.prototype._onHttpRequest = function (req, res) {
114114
var s = req.url.split('?')
115115
var params = querystring.parse(s[1])
116116

117-
// TODO: detect when required params are missing
118117
// TODO: support multiple info_hash parameters as a concatenation of individual requests
119118
var infoHash = params.info_hash && bytewiseDecodeURIComponent(params.info_hash).toString('hex')
120119

121-
if (!infoHash) {
122-
return error('missing info hash')
123-
}
120+
if (!infoHash) return error('missing info_hash')
121+
if (infoHash.length !== 40) return error('invalid info_hash')
124122

125123
if (s[0] === '/announce' || s[0] === '/') {
126124
var ip = self._trustProxy
127125
? req.headers['x-forwarded-for'] || req.connection.remoteAddress
128126
: req.connection.remoteAddress.replace(REMOVE_IPV6_RE, '') // force ipv4
129127
var port = Number(params.port)
130128
var addr = ip + ':' + port
131-
var peerId = bytewiseDecodeURIComponent(params.peer_id).toString('utf8')
129+
var peerId = params.peer_id && bytewiseDecodeURIComponent(params.peer_id).toString('utf8')
130+
131+
if (!port) return error('missing port')
132+
if (!peerId) return error('missing peer_id')
132133

133134
var swarm = self._getSwarm(infoHash)
134135
var peer = swarm.peers[addr]
@@ -197,7 +198,7 @@ Server.prototype._onHttpRequest = function (req, res) {
197198
break
198199

199200
default:
200-
return error('unexpected event: ' + params.event) // early return
201+
return error('invalid event') // early return
201202
}
202203

203204
// send peers

test/client.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@ function createServer (cb) {
1717
var server = new Server({ udp: false })
1818

1919
server.on('error', function (err) {
20-
t.fail(err.message)
20+
cb(err)
2121
})
2222

2323
server.on('warning', function (err) {
24-
t.fail(err.message)
24+
cb(err)
2525
})
2626

2727
portfinder.getPort(function (err, port) {

0 commit comments

Comments
 (0)