diff --git a/src/http_mirage_client.ml b/src/http_mirage_client.ml index 476e140..72468b5 100644 --- a/src/http_mirage_client.ml +++ b/src/http_mirage_client.ml @@ -434,6 +434,12 @@ let request let rec follow_redirect count uri = if count = 0 then Lwt.return_error (`Msg "Redirect limit exceeded") else + let f response acc body = + if Status.is_redirection response.status then + Lwt.return acc + else + f response acc body + in single_request ~ctx ~alpn_protocol ?config tls_config ~meth ~headers ?body uri f f_init >>? fun (resp, body) -> diff --git a/src/http_mirage_client.mli b/src/http_mirage_client.mli index f0ef229..165f2cd 100644 --- a/src/http_mirage_client.mli +++ b/src/http_mirage_client.mli @@ -40,4 +40,6 @@ val request : ~max_redirect ~follow_redirect url body_f body_init] does a HTTP request to [url] using [meth] and the HTTP protocol in [config]. The response is the value of this function. The body is provided in chunks (see [body_f]). + If [follow_redirect] is enabled (true by default), [body_f] is not called + with the potential body of the redirection. Reasonably defaults are used if not provided. *)