| 505 -> "HTTP version not supported"
| invalid_code -> raise (Invalid_code invalid_code)
-let build_sockaddr ~addr ~port =
+let build_sockaddr (addr, port) =
Unix.ADDR_INET (Unix.inet_addr_of_string addr, port)
+let explode_sockaddr = function
+ | Unix.ADDR_INET (addr, port) -> (Unix.string_of_inet_addr addr, port)
+ | _ -> assert false (* can explode only inet address *)
+
+let peername_of_out_channel outchan =
+ Unix.getpeername (Unix.descr_of_out_channel outchan)
+let peername_of_in_channel inchan =
+ Unix.getpeername (Unix.descr_of_in_channel inchan)
+
(** given a dir handle @return a list of entries contained *)
val ls: Unix.dir_handle -> string list
+ (** explode a string in a char list *)
val string_explode: string -> char list
+ (** implode a char list in a string *)
val string_implode: char list -> string
+ (** given an HTTP response code return the corresponding reason phrase *)
val reason_phrase_of_code: int -> string
-val build_sockaddr: addr:string -> port:int -> Unix.sockaddr
+ (** build a Unix.sockaddr inet address from a string representation of an IP
+ address and a port number *)
+val build_sockaddr: string * int -> Unix.sockaddr
+ (** explode an _inet_ Unix.sockaddr address in a string representation of an
+ IP address and a port number *)
+val explode_sockaddr: Unix.sockaddr -> string * int
+
+ (** given an out_channel build on top of a socket, return peername related to
+ that socket *)
+val peername_of_out_channel: out_channel -> Unix.sockaddr
+ (** as above but works on in_channels *)
+val peername_of_in_channel: in_channel -> Unix.sockaddr