From febf8fc2aab898218333e245bab4bda972de5692 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Thu, 10 Nov 2011 05:28:08 +0000 Subject: ensure get_file_data users notice truncated responses We don't want to silently truncate data on our users, that would be bad. --- lib/mogilefs/http_reader.rb | 7 +++++++ lib/mogilefs/mogilefs.rb | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) (limited to 'lib/mogilefs') diff --git a/lib/mogilefs/http_reader.rb b/lib/mogilefs/http_reader.rb index d7a36e6..c338e70 100644 --- a/lib/mogilefs/http_reader.rb +++ b/lib/mogilefs/http_reader.rb @@ -19,6 +19,13 @@ class MogileFS::HTTPReader < MogileFS::Socket "read=#{buf.size} bytes, expected=#@content_length from #@uri", [] end + def stream_to(dest) + rv = MogileFS::X.copy_stream(self, dest) + return rv if rv == @content_length + raise MogileFS::SizeMismatchError, + "read=#{rv} bytes, expected=#@content_length from #@uri", [] + end + def self.first(paths, timeout, count = nil, offset = nil) errors = nil if offset || count diff --git a/lib/mogilefs/mogilefs.rb b/lib/mogilefs/mogilefs.rb index e1b3eb6..d926926 100644 --- a/lib/mogilefs/mogilefs.rb +++ b/lib/mogilefs/mogilefs.rb @@ -62,7 +62,7 @@ class MogileFS::MogileFS < MogileFS::Client sock = MogileFS::HTTPReader.first(paths, @get_file_data_timeout, count, offset) if dest - MogileFS::X.copy_stream(sock, dest) + sock.stream_to(dest) elsif block_given? yield(sock) else -- cgit v1.2.3-24-ge0c7