rescue SystemCallError
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5048 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
40cb49fce8
commit
a1a2b66e0d
@ -353,7 +353,13 @@ module DRb
|
|||||||
|
|
||||||
# Error raised when an error occurs on the underlying communication
|
# Error raised when an error occurs on the underlying communication
|
||||||
# protocol.
|
# protocol.
|
||||||
class DRbConnError < DRbError; end
|
class DRbConnError < DRbError
|
||||||
|
def self.new_with_error(cause)
|
||||||
|
conn_error = self.new(cause.message)
|
||||||
|
conn_error.set_backtrace(cause.backtrace)
|
||||||
|
conn_error
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
# Class responsible for converting between an object and its id.
|
# Class responsible for converting between an object and its id.
|
||||||
#
|
#
|
||||||
@ -549,12 +555,20 @@ module DRb
|
|||||||
end
|
end
|
||||||
|
|
||||||
def load(soc) # :nodoc:
|
def load(soc) # :nodoc:
|
||||||
sz = soc.read(4) # sizeof (N)
|
begin
|
||||||
|
sz = soc.read(4) # sizeof (N)
|
||||||
|
rescue
|
||||||
|
raise(DRbConnError.new_with_error($!))
|
||||||
|
end
|
||||||
raise(DRbConnError, 'connection closed') if sz.nil?
|
raise(DRbConnError, 'connection closed') if sz.nil?
|
||||||
raise(DRbConnError, 'premature header') if sz.size < 4
|
raise(DRbConnError, 'premature header') if sz.size < 4
|
||||||
sz = sz.unpack('N')[0]
|
sz = sz.unpack('N')[0]
|
||||||
raise(DRbConnError, "too large packet #{sz}") if @load_limit < sz
|
raise(DRbConnError, "too large packet #{sz}") if @load_limit < sz
|
||||||
str = soc.read(sz)
|
begin
|
||||||
|
str = soc.read(sz)
|
||||||
|
rescue
|
||||||
|
raise(DRbConnError.new_with_error($!))
|
||||||
|
end
|
||||||
raise(DRbConnError, 'connection closed') if sz.nil?
|
raise(DRbConnError, 'connection closed') if sz.nil?
|
||||||
raise(DRbConnError, 'premature marshal format(can\'t read)') if str.size < sz
|
raise(DRbConnError, 'premature marshal format(can\'t read)') if str.size < sz
|
||||||
begin
|
begin
|
||||||
|
Loading…
x
Reference in New Issue
Block a user