From 406234367544a4207141230683dddaccd98fb21a Mon Sep 17 00:00:00 2001 From: Azul Date: Fri, 21 Jul 2017 08:19:20 +0200 Subject: fix: filedescriptor leak from http_adapters Now we reuse a single adapter for all requests triggered by an incoming request. Then we .terminate the adapter. Includes a regression test. --- lib/nickserver/dispatcher.rb | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) (limited to 'lib/nickserver/dispatcher.rb') diff --git a/lib/nickserver/dispatcher.rb b/lib/nickserver/dispatcher.rb index 71e71cf..dfd53e5 100644 --- a/lib/nickserver/dispatcher.rb +++ b/lib/nickserver/dispatcher.rb @@ -24,21 +24,23 @@ require 'nickserver/request_handlers/fingerprint_handler' module Nickserver class Dispatcher - - def initialize(responder) + def initialize(responder, adapter = nil) @responder = responder + @adapter = adapter end def respond_to(params, headers) request = Nickserver::Request.new params, headers response = handle request - send_response response + responder.respond response.status, response.content end protected + attr_reader :responder, :adapter + def handle(request) - handler_chain.handle request + handler_chain.handle request, adapter end def handler_chain @@ -51,7 +53,7 @@ module Nickserver RequestHandlers::LeapEmailHandler, RequestHandlers::HkpEmailHandler, RequestHandlers::FingerprintHandler, - Proc.new {|_req| proxy_error_response }, + Proc.new { proxy_error_response }, Proc.new { Nickserver::Response.new(404, "404 Not Found\n") } chain.continue_on HTTP::ConnectionError return chain @@ -65,11 +67,5 @@ module Nickserver end end - def send_response(response) - responder.respond response.status, response.content - end - - attr_reader :responder - end end -- cgit v1.2.3