diff options
Diffstat (limited to 'dev-ml/ocaml-conduit/files/lwt3.patch')
-rw-r--r-- | dev-ml/ocaml-conduit/files/lwt3.patch | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/dev-ml/ocaml-conduit/files/lwt3.patch b/dev-ml/ocaml-conduit/files/lwt3.patch new file mode 100644 index 000000000000..de849e60d79a --- /dev/null +++ b/dev-ml/ocaml-conduit/files/lwt3.patch @@ -0,0 +1,58 @@ +Index: ocaml-conduit-0.15.0/lib/conduit_lwt_server.ml +=================================================================== +--- ocaml-conduit-0.15.0.orig/lib/conduit_lwt_server.ml ++++ ocaml-conduit-0.15.0/lib/conduit_lwt_server.ml +@@ -15,10 +15,10 @@ let close (ic, oc) = + let listen ?(backlog=128) sa = + let fd = Lwt_unix.socket (Unix.domain_of_sockaddr sa) Unix.SOCK_STREAM 0 in + Lwt_unix.(setsockopt fd SO_REUSEADDR true); +- Lwt_unix.bind fd sa; ++ Lwt_unix.bind fd sa >>= fun _ -> + Lwt_unix.listen fd backlog; + Lwt_unix.set_close_on_exec fd; +- fd ++ Lwt.return fd + + let with_socket sockaddr f = + let fd = +Index: ocaml-conduit-0.15.0/lib/conduit_lwt_server.mli +=================================================================== +--- ocaml-conduit-0.15.0.orig/lib/conduit_lwt_server.mli ++++ ocaml-conduit-0.15.0/lib/conduit_lwt_server.mli +@@ -3,7 +3,7 @@ val close : 'a Lwt_io.channel * 'b Lwt_i + + val set_max_active : int -> unit + +-val listen : ?backlog:int -> Unix.sockaddr -> Lwt_unix.file_descr ++val listen : ?backlog:int -> Unix.sockaddr -> Lwt_unix.file_descr Lwt.t + + val with_socket + : Unix.sockaddr +Index: ocaml-conduit-0.15.0/lib/conduit_lwt_unix.ml +=================================================================== +--- ocaml-conduit-0.15.0.orig/lib/conduit_lwt_unix.ml ++++ ocaml-conduit-0.15.0/lib/conduit_lwt_unix.ml +@@ -167,11 +167,12 @@ let init ?src ?(tls_server_key=`None) () + module Sockaddr_client = struct + let connect ?src sa = + Conduit_lwt_server.with_socket sa (fun fd -> +- let () = ++ let tx () = + match src with +- | None -> () ++ | None -> Lwt.return () + | Some src_sa -> Lwt_unix.bind fd src_sa +- in ++ in ++ tx () >>= fun () -> + Lwt_unix.connect fd sa >>= fun () -> + let ic = Lwt_io.of_fd ~mode:Lwt_io.input fd in + let oc = Lwt_io.of_fd ~mode:Lwt_io.output fd in +@@ -199,6 +200,7 @@ module Sockaddr_server = struct + match on with + | `Socket s -> s + | `Sockaddr sockaddr -> Conduit_lwt_server.listen ?backlog sockaddr in ++ s >>= fun s -> + Conduit_lwt_server.init ?stop (process_accept ?timeout callback) s + end + |