diff options
| author | Marcos Magueta <maguetamarcos@gmail.com> | 2026-04-27 23:29:57 -0300 |
|---|---|---|
| committer | Marcos Magueta <maguetamarcos@gmail.com> | 2026-04-27 23:29:57 -0300 |
| commit | 4fdf3392868c72ff4c33b70d165a177e97f2fece (patch) | |
| tree | 4eebfc260c890ea56d59f874cdfa0c9b1f55cd98 /lib/transport.ml | |
| parent | 97960adb8426e5270fe16b027e82a2c61674f821 (diff) | |
| download | Sakura-4fdf3392868c72ff4c33b70d165a177e97f2fece.tar.gz Sakura-4fdf3392868c72ff4c33b70d165a177e97f2fece.zip | |
Format
Diffstat (limited to 'lib/transport.ml')
| -rw-r--r-- | lib/transport.ml | 34 |
1 files changed, 19 insertions, 15 deletions
diff --git a/lib/transport.ml b/lib/transport.ml index 8c8a2bd..b541e16 100644 --- a/lib/transport.ml +++ b/lib/transport.ml @@ -22,27 +22,30 @@ module TCP : TRANSPORT = struct let sockaddr_of_fields = function | `Inet (addr, port) -> - Ok { address_family = Unix.PF_INET; - sockaddr = Unix.ADDR_INET (Unix.inet_addr_of_string addr, port) } + Ok + { + address_family = Unix.PF_INET; + sockaddr = Unix.ADDR_INET (Unix.inet_addr_of_string addr, port); + } | `Unix path -> - Ok { address_family = Unix.PF_UNIX; - sockaddr = Unix.ADDR_UNIX path } + Ok { address_family = Unix.PF_UNIX; sockaddr = Unix.ADDR_UNIX path } let parse sexp = let open Sexplib.Sexp in let errorf fmt = Printf.ksprintf (fun s -> Error s) fmt in let rec go addr port path = function - | [] -> - (match addr, port, path with - | Some a, Some p, None -> sockaddr_of_fields (`Inet (a, p)) - | None, None, Some s -> sockaddr_of_fields (`Unix s) - | None, None, None -> errorf "transport/tcp: no address fields" - | _ -> errorf "transport/tcp: use (address + port) or (path), not both") + | [] -> ( + match (addr, port, path) with + | Some a, Some p, None -> sockaddr_of_fields (`Inet (a, p)) + | None, None, Some s -> sockaddr_of_fields (`Unix s) + | None, None, None -> errorf "transport/tcp: no address fields" + | _ -> + errorf "transport/tcp: use (address + port) or (path), not both") | List [ Atom "address"; Atom a ] :: rest -> go (Some a) port path rest - | List [ Atom "port"; Atom p ] :: rest -> - (match int_of_string_opt p with - | Some n -> go addr (Some n) path rest - | None -> errorf "transport/tcp: invalid port: %s" p) + | List [ Atom "port"; Atom p ] :: rest -> ( + match int_of_string_opt p with + | Some n -> go addr (Some n) path rest + | None -> errorf "transport/tcp: invalid port: %s" p) | List [ Atom "path"; Atom p ] :: rest -> go addr port (Some p) rest | bad :: _ -> errorf "transport/tcp: unexpected: %s" (to_string bad) in @@ -63,7 +66,8 @@ module TCP : TRANSPORT = struct let listen fd = Unix.listen fd 5; - Printf.printf "Listening on %s\n%!" (string_of_sockaddr (Unix.getsockname fd)) + Printf.printf "Listening on %s\n%!" + (string_of_sockaddr (Unix.getsockname fd)) let accept fd = let conn, _ = Unix.accept fd in |
