@@ -778,13 +778,12 @@ accept_chunk([<<?MAGIC:4/unsigned,
778778                _TrailerSize :32 /unsigned ,
779779                FilterSize :8 /unsigned ,
780780                _Reserved :24 ,
781-                 _Filter :FilterSize /binary ,
782781                Data /binary >>
783782              | DataParts ] = 
784783                 Chunk ,
785784             #? MODULE {cfg  =  # cfg {}, mode  =  # write {tail_info  =  {Next , _ }}} = 
786785                 State0 ) -> 
787-     DataAndTrailer  =  [Data  | DataParts ],
786+     DataAndTrailer  =  skip ( FilterSize ,  [Data  | DataParts ]) ,
788787    validate_crc (Next , Crc , part (DataSize , DataAndTrailer )),
789788    % % assertion
790789    %  true = iolist_size(DataAndTrailer) == (DataSize + TrailerSize),
@@ -2788,6 +2787,17 @@ part(Len, [B | L]) when Len > 0 ->
27882787            [binary :part (B , {0 , Len })]
27892788    end .
27902789
2790+ skip (0 , L ) -> 
2791+     L ;
2792+ skip (Len , [B  | L ]) when  Len  >  0  -> 
2793+     S  =  byte_size (B ),
2794+     case  Len  <  S  of 
2795+         true  ->
2796+             [binary :part (B , {S , Len  -  S }) | L ];
2797+         false  ->
2798+             skip (Len  -  S , L )
2799+     end .
2800+ 
27912801-spec  recover_tracking (state ()) -> 
27922802    osiris_tracking :state ().
27932803recover_tracking (#? MODULE {cfg  =  # cfg {directory  =  Dir ,
@@ -3232,6 +3242,7 @@ list_dir(Dir) ->
32323242    end .
32333243
32343244-ifdef (TEST ).
3245+ -include_lib (" eunit/include/eunit.hrl" 
32353246
32363247
32373248part_test () -> 
@@ -3240,4 +3251,12 @@ part_test() ->
32403251    [<<" AB" " CDEF" =  part (6 , [<<" AB" " CDEF" 
32413252    ok .
32423253
3254+ skip_test () -> 
3255+     [<<" EF" =  skip (4 , [<<" ABCDEF" 
3256+     [<<" B" " CDEF" =  skip (1 , [<<" AB" " CDEF" 
3257+     [<<" CDEF" =  skip (2 , [<<" AB" " CDEF" 
3258+     [<<" DEF" =  skip (3 , [<<" AB" " CDEF" 
3259+     [<<" AB" " CDEF" =  skip (0 , [<<" AB" " CDEF" 
3260+     ok .
3261+ 
32433262-endif .
0 commit comments