summaryrefslogtreecommitdiff
path: root/src/couchdb/couch_stream.erl
diff options
context:
space:
mode:
authorRobert Newson <rnewson@apache.org>2010-08-19 08:55:10 +0000
committerRobert Newson <rnewson@apache.org>2010-08-19 08:55:10 +0000
commit678cd66689ad9ea2f5c47f41af6bf3b9ae0a3c59 (patch)
tree4ed297f23280f785cd673122d630d794d8d83960 /src/couchdb/couch_stream.erl
parent1f729f7f261f9607b74b6c8723e190720db8dc32 (diff)
Support Range header for all attachments, even without compaction upgrade. It's just less efficient.
git-svn-id: https://svn.apache.org/repos/asf/couchdb/trunk@987084 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/couchdb/couch_stream.erl')
-rw-r--r--src/couchdb/couch_stream.erl3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/couchdb/couch_stream.erl b/src/couchdb/couch_stream.erl
index 9209cfec..60af1c2b 100644
--- a/src/couchdb/couch_stream.erl
+++ b/src/couchdb/couch_stream.erl
@@ -129,6 +129,9 @@ range_foldl(Fd, PosList, From, To, Fun, Acc) ->
range_foldl(_Fd, _PosList, _From, To, Off, _Fun, Acc) when Off >= To ->
Acc;
+range_foldl(Fd, [Pos|Rest], From, To, Off, Fun, Acc) when is_integer(Pos) -> % old-style attachment
+ {ok, Bin} = couch_file:pread_iolist(Fd, Pos),
+ range_foldl(Fd, [{Pos, iolist_size(Bin)}] ++ Rest, From, To, Off, Fun, Acc);
range_foldl(Fd, [{_Pos, Size}|Rest], From, To, Off, Fun, Acc) when From > Off + Size ->
range_foldl(Fd, Rest, From, To, Off + Size, Fun, Acc);
range_foldl(Fd, [{Pos, Size}|Rest], From, To, Off, Fun, Acc) ->