@@ -137,9 +137,7 @@ let of_io ?(buf_size=64 * 1024) (sock:Io.t) : t =
137137
138138let rec iter f (self :t ) : unit =
139139 self.fill_buf() ;
140- if self.len= 0 then (
141- self.close() ;
142- ) else (
140+ if self.len> 0 then (
143141 f self.bs self.off self.len;
144142 self.consume self.len;
145143 (iter [@ tailcall]) f self
@@ -345,6 +343,7 @@ let read_until ~buf ~target (self:t) : unit =
345343 let pos = ref 0 in
346344 while ! pos < len do
347345 self.fill_buf() ;
346+ if self.len = 0 then failwith " Unexpected end of input" ;
348347 try
349348 let i = index_rec self.bs (self.off+ self.len) self.off c0 in
350349 let r = i - self.off + 1 in
@@ -364,9 +363,10 @@ let read_until ~buf ~target (self:t) : unit =
364363 end
365364 else incr pos
366365 done
367- with Not_found ->
368- Buffer. add_subbytes buf self.bs self.off self.len;
369- self.consume self.len
366+ with
367+ | Not_found ->
368+ Buffer. add_subbytes buf self.bs self.off self.len;
369+ self.consume self.len
370370 done
371371
372372(* $= & ~printer:Q.(Print.string)
@@ -394,6 +394,7 @@ let read_path ~buf (self:t) : (string * string list * (string * string) list) =
394394 in
395395 while ! cont do
396396 self.fill_buf() ;
397+ if self.len = 0 then raise (failwith " Unexpected end of input" );
397398 try
398399 let (i,nb) = index_rec3 enc self.bs (self.off+ self.len) self.off '/' '?' ' ' in
399400 let r = i - self.off + 1 in
@@ -416,6 +417,7 @@ let read_path ~buf (self:t) : (string * string list * (string * string) list) =
416417 let last_key = ref " " in
417418 while ! cont_query do
418419 self.fill_buf() ;
420+ if self.len = 0 then raise (failwith " Unexpected end of input" );
419421 try
420422 let (i,nb) = index_rec3 enc self.bs (self.off+ self.len) self.off '=' '&' ' ' in
421423 let r = i - self.off + 1 in
@@ -465,9 +467,7 @@ let read_line_into (self:t) ~buf : unit =
465467 let continue = ref true in
466468 while ! continue do
467469 self.fill_buf() ;
468- if self.len= 0 then (
469- continue := false ;
470- ) else
470+ if self.len= 0 then failwith " Unexpected end of input" else
471471 try
472472 let j, nb = index_rec2 self.bs (self.off + self.len) self.off '\r' 2 '\n' 1 in
473473 Buffer. add_subbytes buf self.bs self.off (j - self.off); (* without \r\n *)
@@ -480,6 +480,7 @@ let read_line_into (self:t) ~buf : unit =
480480 self.off < - self.off + self.len;
481481 self.len < - 0 ;
482482 self.fill_buf() ;
483+ if self.len = 0 then raise Not_found ;
483484 self.consume to_eat
484485 end
485486 with Not_found ->
0 commit comments