Skip to content
Merged
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
17 changes: 4 additions & 13 deletions src/rpc/csexp_rpc.ml
Original file line number Diff line number Diff line change
Expand Up @@ -39,27 +39,18 @@ module Socket = struct
end

module Unix : Unix_socket = struct
let addr socket =
Unix.ADDR_UNIX
(match
let cwd = Sys.getcwd () in
String.drop_prefix socket ~prefix:(cwd ^ "/")
with
| Some s -> "./" ^ s
| None -> socket)
;;

let bind fd ~socket =
let with_chdir fd ~socket ~f =
let old = Sys.getcwd () in
let dir = Filename.dirname socket in
let sock = Filename.basename socket in
Sys.chdir dir;
Exn.protect
~finally:(fun () -> Sys.chdir old)
~f:(fun () -> U.bind fd (Unix.ADDR_UNIX sock))
~f:(fun () -> f fd (Unix.ADDR_UNIX sock))
;;

let connect fd ~socket = U.connect fd (addr socket)
let connect fd ~socket = with_chdir fd ~socket ~f:U.connect
let bind fd ~socket = with_chdir fd ~socket ~f:U.bind
end

module Fail : Unix_socket = struct
Expand Down
Loading