@@ -53,9 +53,7 @@ type t =
5353 ; r_port : int
5454 ; r_ssl : bool
5555 ; r_filenames : string list ref
56- ; r_sockaddr : Lwt_unix .sockaddr
57- ; r_remote_ip : string Lazy .t
58- ; r_remote_ip_parsed : [`Ip of Ipaddr .t | `Unix of string ] Lazy .t
56+ ; r_remote_ip : string
5957 ; r_forward_ip : string list
6058 ; r_uri : uri
6159 ; r_meth : Cohttp.Code .meth
@@ -86,26 +84,11 @@ let make
8684 ~connection_closed
8785 request
8886 =
89- let r_remote_ip =
90- lazy
91- (match sockaddr with
92- | Unix. ADDR_INET (ip , _port ) -> Unix. string_of_inet_addr ip
93- | ADDR_UNIX f -> f)
94- in
95- let r_remote_ip_parsed =
96- lazy
97- (match sockaddr with
98- | Unix. ADDR_INET (ip , _port ) ->
99- `Ip (Ipaddr. of_string_exn (Unix. string_of_inet_addr ip))
100- | ADDR_UNIX f -> `Unix f)
101- in
10287 { r_address = address
10388 ; r_port = port
10489 ; r_ssl = ssl
10590 ; r_filenames = filenames
106- ; r_sockaddr = sockaddr
107- ; r_remote_ip
108- ; r_remote_ip_parsed
91+ ; r_remote_ip = sockaddr
10992 ; r_forward_ip = forward_ip
11093 ; r_uri = make_uri (Cohttp.Request. uri request)
11194 ; r_encoding = Cohttp.Request. encoding request
@@ -140,7 +123,6 @@ let update
140123 ; r_meth
141124 ; r_forward_ip
142125 ; r_remote_ip
143- ; r_remote_ip_parsed
144126 ; r_cookies_override
145127 ; r_body
146128 ; r_sub_path
@@ -150,11 +132,8 @@ let update
150132 let r_ssl = match ssl with Some ssl -> ssl | None -> r_ssl
151133 and r_forward_ip =
152134 match forward_ip with Some forward_ip -> forward_ip | None -> r_forward_ip
153- and r_remote_ip, r_remote_ip_parsed =
154- match remote_ip with
155- | Some remote_ip ->
156- lazy remote_ip, lazy (`Ip (Ipaddr. of_string_exn remote_ip))
157- | None -> r_remote_ip, r_remote_ip_parsed
135+ and r_remote_ip =
136+ match remote_ip with Some remote_ip -> remote_ip | None -> r_remote_ip
158137 and r_sub_path = match sub_path with Some _ -> sub_path | None -> r_sub_path
159138 and r_body =
160139 match post_data with
@@ -193,7 +172,6 @@ let update
193172 ; r_meth
194173 ; r_forward_ip
195174 ; r_remote_ip
196- ; r_remote_ip_parsed
197175 ; r_body
198176 ; r_cookies_override
199177 ; r_sub_path
@@ -292,8 +270,19 @@ let post_params r s i =
292270let files r s i =
293271 match force_post_data r s i with Some v -> Some (v > |= snd) | None -> None
294272
295- let remote_ip {r_remote_ip; _} = Lazy. force r_remote_ip
296- let remote_ip_parsed {r_remote_ip_parsed; _} = Lazy. force r_remote_ip_parsed
273+ let remote_ip {r_remote_ip; _} = r_remote_ip
274+
275+ let remote_ip_parsed {r_remote_ip; _} =
276+ let is_prefix prefix s =
277+ (* TODO: Naive version to be swapped with [String.starts_with ~prefix s]
278+ when the dependency on OCaml >= 4.13 is acceptable. *)
279+ let plen = String. length prefix in
280+ String. length s > = plen && String. sub s 0 plen = prefix
281+ in
282+ if is_prefix " unix://" r_remote_ip
283+ then `Unix r_remote_ip
284+ else `Ip (Ipaddr. of_string_exn r_remote_ip)
285+
297286let forward_ip {r_forward_ip; _} = r_forward_ip
298287let request_cache {r_request_cache; _} = r_request_cache
299288let tries {r_tries; _} = r_tries
0 commit comments