@@ -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
0 commit comments