Fix potential resource leaks in streaming server
This commit is contained in:
		@@ -45,7 +45,7 @@ const authenticationMiddleware = (req, res, next) => {
 | 
				
			|||||||
      return next(err)
 | 
					      return next(err)
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    client.query('SELECT oauth_access_tokens.resource_owner_id, users.account_id FROM oauth_access_tokens INNER JOIN users ON oauth_access_tokens.resource_owner_id = users.id WHERE token = $1 LIMIT 1', [token], (err, result) => {
 | 
					    client.query('SELECT oauth_access_tokens.resource_owner_id, users.account_id FROM oauth_access_tokens INNER JOIN users ON oauth_access_tokens.resource_owner_id = users.id WHERE oauth_access_tokens.token = $1 LIMIT 1', [token], (err, result) => {
 | 
				
			||||||
      done()
 | 
					      done()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (err) {
 | 
					      if (err) {
 | 
				
			||||||
@@ -115,8 +115,13 @@ const streamFrom = (id, req, res, needsFiltering = false) => {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
  })
 | 
					  })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Heartbeat to keep connection alive
 | 
					  const heartbeat = setInterval(() => res.write(':thump\n'), 15000)
 | 
				
			||||||
  setInterval(() => res.write(':thump\n'), 15000)
 | 
					
 | 
				
			||||||
 | 
					  req.on('close', () => {
 | 
				
			||||||
 | 
					    log.verbose(`Ending stream from ${id} for ${req.accountId}`)
 | 
				
			||||||
 | 
					    clearInterval(heartbeat)
 | 
				
			||||||
 | 
					    redisClient.quit()
 | 
				
			||||||
 | 
					  })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  redisClient.subscribe(id)
 | 
					  redisClient.subscribe(id)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user