Skip to content

Commit 2e09d49

Browse files
committed
Return empty list on EAI_ errors for getaddrinfo@luv (#351)
Unix.getaddrinfo used in u-ring ignores gar_errno and returns an empty list, this makes the luv backend follow a similar behaviour.
1 parent eb4d9ed commit 2e09d49

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

lib_eio_luv/eio_luv.ml

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -654,10 +654,15 @@ module Low_level = struct
654654
| _ -> None
655655
in
656656
let request = Luv.DNS.Addr_info.Request.make () in
657-
await_with_cancel ~request (fun loop -> Luv.DNS.getaddrinfo ~loop ~request ~service ~node ())
658-
|> or_raise
659-
|> List.filter_map to_eio_sockaddr_t
660-
657+
match (await_with_cancel ~request
658+
(fun loop -> Luv.DNS.getaddrinfo ~loop ~request ~service ~node ()))
659+
with
660+
| Ok nl -> List.filter_map to_eio_sockaddr_t nl
661+
| Error `EAI_ADDRFAMILY | Error `EAI_AGAIN | Error `EAI_BADFLAGS | Error `EAI_BADHINTS
662+
| Error `EAI_CANCELED | Error `EAI_FAIL | Error `EAI_FAMILY | Error `EAI_MEMORY
663+
| Error `EAI_NODATA | Error `EAI_NONAME| Error `EAI_OVERFLOW | Error `EAI_PROTOCOL
664+
| Error `EAI_SERVICE | Error `EAI_SOCKTYPE -> []
665+
| Error e -> raise (Luv_error e)
661666
end
662667

663668
open Low_level

0 commit comments

Comments
 (0)