mirror of
https://github.com/webtorrent/bittorrent-tracker.git
synced 2025-02-22 21:29:07 +00:00
server: Improve style of announce/filter logic
- Filter before potentially creating a swarm that is not needed - Unify getSwarm()/createSwarm() into a getOrCreateSwarm() function
This commit is contained in:
parent
c98c40abe5
commit
65c02dd153
42
server.js
42
server.js
@ -656,31 +656,35 @@ Server.prototype._onRequest = function (params, cb) {
|
||||
|
||||
Server.prototype._onAnnounce = function (params, cb) {
|
||||
var self = this
|
||||
|
||||
if (self._filter) {
|
||||
self._filter(params.info_hash, params, function (err) {
|
||||
// Presence of `err` means that this announce request is disallowed
|
||||
if (err) return cb(err)
|
||||
|
||||
self.getSwarm(params.info_hash, function (err, swarm) {
|
||||
if (err) return cb(err)
|
||||
|
||||
if (self._filter) {
|
||||
self._filter(params.info_hash, params, function (err) {
|
||||
// Precense of err means that this torrent or user is disallowd
|
||||
if (err) cb(err)
|
||||
else {
|
||||
if (swarm) announce(swarm)
|
||||
else createSwarm()
|
||||
}
|
||||
getOrCreateSwarm(function (err, swarm) {
|
||||
if (err) return cb(err)
|
||||
announce(swarm)
|
||||
})
|
||||
} else {
|
||||
if (swarm) announce(swarm)
|
||||
else createSwarm()
|
||||
}
|
||||
})
|
||||
|
||||
function createSwarm () {
|
||||
self.createSwarm(params.info_hash, function (err, swarm) {
|
||||
})
|
||||
} else {
|
||||
getOrCreateSwarm(function (err, swarm) {
|
||||
if (err) return cb(err)
|
||||
announce(swarm)
|
||||
})
|
||||
}
|
||||
|
||||
// Get existing swarm, or create one if one does not exist
|
||||
function getOrCreateSwarm (cb) {
|
||||
self.getSwarm(params.info_hash, function (err, swarm) {
|
||||
if (err) return cb(err)
|
||||
if (swarm) return cb(null, swarm)
|
||||
self.createSwarm(params.info_hash, function (err, swarm) {
|
||||
if (err) return cb(err)
|
||||
cb(null, swarm)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
function announce (swarm) {
|
||||
if (!params.event || params.event === 'empty') params.event = 'update'
|
||||
|
Loading…
Reference in New Issue
Block a user