Skip to content
Merged
Show file tree
Hide file tree
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
110 changes: 4 additions & 106 deletions async/conduit_async.ml
Original file line number Diff line number Diff line change
Expand Up @@ -15,110 +15,8 @@
*
*)

open Core
open Async
module V1 = V1
module V2 = V2

type +'a io = 'a Deferred.t
type ic = Reader.t
type oc = Writer.t

type addr = [
| `OpenSSL of Ipaddr.t * int * Conduit_async_ssl.Ssl_config.t
| `TCP of Ipaddr.t * int
| `Unix_domain_socket of string
] [@@deriving sexp]

let connect ?interrupt dst =
match dst with
| `TCP (ip, port) ->
let endp = Host_and_port.create ~host:(Ipaddr.to_string ip) ~port in
Tcp.connect ?interrupt (Tcp.Where_to_connect.of_host_and_port endp)
>>= fun (_, rd, wr) -> return (rd,wr)
| `OpenSSL (ip, port, cfg) ->
let endp = Host_and_port.create ~host:(Ipaddr.to_string ip) ~port in
Tcp.connect ?interrupt (Tcp.Where_to_connect.of_host_and_port endp)
>>= fun (_, rd, wr) ->
Conduit_async_ssl.ssl_connect ~cfg rd wr
| `Unix_domain_socket file ->
Tcp.connect ?interrupt (Tcp.Where_to_connect.of_file file)
>>= fun (_, rd, wr) ->
return (rd,wr)

let with_connection ?interrupt dst f =
match dst with
| `TCP (ip, port) ->
let endp = Host_and_port.create ~host:(Ipaddr.to_string ip) ~port in
Tcp.with_connection ?interrupt
(Tcp.Where_to_connect.of_host_and_port endp)
(fun _ rd wr -> f rd wr)
| `OpenSSL (ip, port, cfg) ->
let endp = Host_and_port.create ~host:(Ipaddr.to_string ip) ~port in
Tcp.with_connection ?interrupt
(Tcp.Where_to_connect.of_host_and_port endp)
begin fun _ rd wr ->
Conduit_async_ssl.ssl_connect ~cfg rd wr >>= fun (rd, wr) ->
Monitor.protect (fun () -> f rd wr) ~finally:begin fun () ->
Deferred.all_unit [ Reader.close rd ; Writer.close wr ]
end
end
| `Unix_domain_socket file ->
Tcp.with_connection ?interrupt (Tcp.Where_to_connect.of_file file)
(fun _ rd wr -> f rd wr)

type trust_chain = [
| `Ca_file of string
| `Ca_path of string
| `Search_file_first_then_path of
[ `File of string ] *
[ `Path of string ]
] [@@deriving sexp]

type openssl = [
| `OpenSSL of
[ `Crt_file_path of string ] *
[ `Key_file_path of string ]
] [@@deriving sexp]

type requires_async_ssl = [
| openssl
| `OpenSSL_with_trust_chain of openssl * trust_chain
] [@@deriving sexp]

type server = [
| `TCP
| requires_async_ssl
] [@@deriving sexp]

let serve
?max_connections ?backlog
?buffer_age_limit ~on_handler_error mode where_to_listen handle_request =
let handle_client handle_request sock rd wr =
match mode with
| `TCP -> handle_request sock rd wr
| #requires_async_ssl as async_ssl ->
let (crt_file, key_file, ca_file, ca_path) =
match async_ssl with
| `OpenSSL (`Crt_file_path crt_file, `Key_file_path key_file) ->
(crt_file, key_file, None, None)
| `OpenSSL_with_trust_chain
(`OpenSSL (`Crt_file_path crt, `Key_file_path key), trust_chain) ->
let (ca_file, ca_path) =
match trust_chain with
| `Ca_file ca_file -> (Some ca_file, None)
| `Ca_path ca_path -> (None, Some ca_path)
| `Search_file_first_then_path (`File ca_file, `Path ca_path) ->
(Some ca_file, Some ca_path)
in
(crt, key, ca_file, ca_path)
in
let cfg = Conduit_async_ssl.Ssl_config.create
?ca_file ?ca_path ~crt_file ~key_file () in
Conduit_async_ssl.ssl_listen cfg rd wr >>= fun (rd,wr) ->
Monitor.protect
(fun () -> handle_request sock rd wr)
~finally:(fun () ->
Deferred.all_unit [ Reader.close rd ; Writer.close wr ])
in
Tcp.Server.create ?max_connections ?backlog
?buffer_age_limit ~on_handler_error
where_to_listen (handle_client handle_request)
[@@@deprecated "Use Conduit_async.V1"]
include V1.Conduit_async
67 changes: 0 additions & 67 deletions async/conduit_async.mli

This file was deleted.

46 changes: 0 additions & 46 deletions async/conduit_async_ssl_dummy.ml

This file was deleted.

62 changes: 0 additions & 62 deletions async/conduit_async_ssl_dummy.mli

This file was deleted.

Loading