From a69925d4b4671fe65e54e34a009e17fb1fa47700 Mon Sep 17 00:00:00 2001 From: godfat Date: Wed, 11 Mar 2009 16:19:43 +0800 Subject: [PATCH] call IO.select([sock]) if sock is not ready. --- lib/mogilefs/mogilefs.rb | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/mogilefs/mogilefs.rb b/lib/mogilefs/mogilefs.rb index 737f468..c7c33ed 100644 --- a/lib/mogilefs/mogilefs.rb +++ b/lib/mogilefs/mogilefs.rb @@ -71,7 +71,17 @@ class MogileFS::MogileFS < MogileFS::Client when /^http:\/\// then begin sock = http_get_sock(URI.parse(path)) - return block_given? ? yield(sock) : sock.read + return( if block_given? + yield(sock) + else + begin + sock.read + rescue Errno::EAGAIN + IO.select([sock]) + retry + end + end ) + # return block_given? ? yield(sock) : sock.read rescue MogileFS::Timeout, Errno::ECONNREFUSED, EOFError, SystemCallError, MogileFS::InvalidResponseError next -- 2.11.4.GIT