Merge pull request #13 from c-cube/fix-12

Fix #12: set size properly for POST
This commit is contained in:
Simon Cruanes 2023-03-13 15:36:42 -04:00 committed by GitHub
commit 52c35dc2df
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 5 deletions

View file

@ -13,7 +13,8 @@ clean:
doc:
@dune build @doc
WATCH?=@all
watch:
@dune build @all -w
@dune build $(WATCH )-w
.PHONY: all build test watch

View file

@ -311,15 +311,21 @@ module Make(IO : IO)
in
_apply_config self config;
opt_iter range ~f:(fun s -> Curl.set_range self s);
(* TODO: ability to make content a stream with a `read` function *)
opt_iter content
~f:(fun content ->
Curl.set_readfunction self (content_read_fun_ content);
(* also set size if known *)
match content_size_ content with
| None -> headers := ("transfer-encoding", "chunked") :: !headers
| Some size -> Curl.set_infilesize self size
match content_size_ content, meth with
| None, _ ->
headers := ("expect", "") :: ("transfer-encoding", "chunked") :: !headers
| Some size , POST _ ->
Curl.set_postfieldsize self size;
| Some size, _ ->
Curl.set_infilesize self size
);
(* local state *)
let tries = max tries 1 in (* at least one attempt *)
let body = Buffer.create 64 in
@ -329,7 +335,8 @@ module Make(IO : IO)
begin match meth with
| POST [] when (content <> None) ->
Curl.set_post self true
| POST l -> Curl.set_httppost self l;
| POST l ->
Curl.set_httppost self l;
| GET -> Curl.set_httpget self true;
| PUT ->
Curl.set_customrequest self "PUT";
@ -341,6 +348,7 @@ module Make(IO : IO)
| TRACE -> Curl.set_customrequest self "TRACE"
| PATCH -> Curl.set_customrequest self "PATCH"
end;
_set_headers self !headers;
Curl.set_headerfunction self
(fun s0 ->