Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 8 additions & 3 deletions async/cohttp_async_io.ml
Original file line number Diff line number Diff line change
Expand Up @@ -49,14 +49,19 @@ let read_line =
|`Eof -> eprintf "<<<EOF\n"; None
)

let create_buf len =
let len' = min len 0x8000 in
String.create len', len'

let read ic len =
let buf = String.create len in
let buf, len = create_buf len in
Reader.read ic ~len buf >>| function
| `Ok len' -> String.sub buf 0 len'
| `Ok len' ->
if len' = len then buf else String.sub buf 0 len'
| `Eof -> ""

let read_exactly ic len =
let buf = String.create len in
let buf, len = create_buf len in
Reader.really_read ic ~pos:0 ~len buf >>|
function
|`Ok -> Some buf
Expand Down