Kouhei Sutou
null+****@clear*****
Mon Jul 14 23:40:32 JST 2014
Kouhei Sutou 2014-07-14 23:40:32 +0900 (Mon, 14 Jul 2014) New Revision: 9b5ccbc6a2cf694cd6501823d3c6e2921d31a0e6 https://github.com/droonga/droonga-client-ruby/commit/9b5ccbc6a2cf694cd6501823d3c6e2921d31a0e6 Message: droonga-protocol thread: fix EOF handling Modified files: lib/droonga/client/connection/droonga-protocol/thread.rb Modified: lib/droonga/client/connection/droonga-protocol/thread.rb (+7 -6) =================================================================== --- lib/droonga/client/connection/droonga-protocol/thread.rb 2014-05-29 22:30:15 +0900 (8aba7b9) +++ lib/droonga/client/connection/droonga-protocol/thread.rb 2014-07-14 23:40:32 +0900 (5e2ff85) @@ -151,6 +151,7 @@ module Droonga @client_handlers.each_key do |client| client.close end + @read_ios.clear end def host @@ -194,18 +195,18 @@ module Droonga @read_ios << client @client_handlers[client] = lambda do unpacker = MessagePack::Unpacker.new - loop do - readable, = IO.select([client], nil, nil, 0) - break unless readable + begin data = client.read_nonblock(BUFFER_SIZE) + rescue EOFError + client.close + @read_ios.delete(client) + @client_handlers.delete(client) + else unpacker.feed_each(data) do |fluent_message| tag, time, droonga_message = fluent_message yield(droonga_message) end end - client.close - @read_ios.delete(client) - @client_handlers.delete(client) end else @client_handlers[io].call -------------- next part -------------- HTML����������������������������... 下載