Skip to content

Commit 49c3ae0

Browse files
committed
Merge branch 'no-use-unix-sockaddr' into to-eio
2 parents af9676f + d455c3d commit 49c3ae0

File tree

4 files changed

+20
-46
lines changed

4 files changed

+20
-46
lines changed

src/server/ocsigen_cohttp.ml

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,8 @@ let handler
6767
let filenames = ref [] in
6868
let sockaddr =
6969
match eio_stream with
70-
| `Unix s -> Unix.ADDR_UNIX s
71-
| `Tcp (ip, port) ->
72-
Unix.ADDR_INET
73-
(Unix.inet_addr_of_string (ip : _ Eio.Net.Ipaddr.t :> string), port)
70+
| `Unix s -> "unix://" ^ s
71+
| `Tcp (ip, _port) -> (ip : _ Eio.Net.Ipaddr.t :> string)
7472
in
7573
let connection_closed =
7674
try fst (Hashtbl.find connections conn)

src/server/ocsigen_request.ml

Lines changed: 17 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,7 @@ type t =
5353
; r_port : int
5454
; r_ssl : bool
5555
; r_filenames : string list ref
56-
; r_sockaddr : 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 =
292270
let files r s i =
293271
match force_post_data r s i with Some v -> Some (snd v) | 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+
297286
let forward_ip {r_forward_ip; _} = r_forward_ip
298287
let request_cache {r_request_cache; _} = r_request_cache
299288
let tries {r_tries; _} = r_tries

src/server/ocsigen_request.mli

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ val make :
2121
-> port:int
2222
-> ssl:bool
2323
-> filenames:string list ref
24-
-> sockaddr:Unix.sockaddr
24+
-> sockaddr:string
2525
-> body:Cohttp_eio.Body.t
2626
-> connection_closed:unit Promise.t
2727
-> Cohttp.Request.t

src/server/ocsigen_server.ml

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -34,19 +34,6 @@ let log_uncaught_exception exn =
3434
Logs.err ~src:section (fun fmt ->
3535
fmt "Uncaught Exception@\n%a" Eio.Exn.pp exn)
3636

37-
let pp_sockaddr ppf = function
38-
| Unix.ADDR_INET (ip, _port) ->
39-
Format.fprintf ppf "%s" (Unix.string_of_inet_addr ip)
40-
| ADDR_UNIX f -> Format.fprintf ppf "%s" f
41-
42-
let _warn sockaddr s =
43-
Logs.warn ~src:section (fun fmt ->
44-
fmt "While talking to %a:%s" pp_sockaddr sockaddr s)
45-
46-
let _dbg sockaddr s =
47-
Logs.info ~src:section (fun fmt ->
48-
fmt "While talking to %a:%s" pp_sockaddr sockaddr s)
49-
5037
(* fatal errors messages *)
5138
let errmsg = function
5239
| Dynlink_wrapper.Error e ->

0 commit comments

Comments
 (0)