Time out and clean up udp stopped messages

This solves one of the problems with the bittorrent-client tests
not exiting
This commit is contained in:
John Hiesey 2014-06-04 23:33:08 -07:00
parent 575f28e041
commit 48baf2bfa6

View File

@ -172,15 +172,16 @@ Tracker.prototype._requestUdp = function (requestUrl, opts) {
var socket = dgram.createSocket('udp4')
var transactionId = new Buffer(hat(32), 'hex')
if (opts.event !== 'stopped') {
// if we're sending a stopped message, we don't really care if it arrives, so don't
// set a timer
var stopped = opts.event === 'stopped'
// if we're sending a stopped message, we don't really care if it arrives, so set
// a short timer and don't call error
var timeout = setTimeout(function () {
timeout = null
cleanup()
if (!stopped) {
error('tracker request timed out')
}, 15000)
}
}, stopped ? 1500 : 15000)
if (timeout && timeout.unref) {
timeout.unref()