diff options
author | Marcus Arendt <[email protected]> | 2014-08-08 15:02:29 +0200 |
---|---|---|
committer | Marcus Arendt <[email protected]> | 2014-08-08 15:02:29 +0200 |
commit | e189bae81fbc873d3349b9dec12ef234daf9d8ad (patch) | |
tree | 52d2791377955057c44fad4d0479439c900b9c77 /lib/orber/src/orber_iiop_outproxy.erl | |
parent | 2525622c384b27581c4b4cb158fc951f15ac5ca3 (diff) | |
parent | c472c3f5aafc81a409d0443c4601de43bafb53cb (diff) | |
download | otp-e189bae81fbc873d3349b9dec12ef234daf9d8ad.tar.gz otp-e189bae81fbc873d3349b9dec12ef234daf9d8ad.tar.bz2 otp-e189bae81fbc873d3349b9dec12ef234daf9d8ad.zip |
Merge branch 'maint-17' into maint
Diffstat (limited to 'lib/orber/src/orber_iiop_outproxy.erl')
-rw-r--r-- | lib/orber/src/orber_iiop_outproxy.erl | 38 |
1 files changed, 37 insertions, 1 deletions
diff --git a/lib/orber/src/orber_iiop_outproxy.erl b/lib/orber/src/orber_iiop_outproxy.erl index 8319d89088..4ba5b05995 100644 --- a/lib/orber/src/orber_iiop_outproxy.erl +++ b/lib/orber/src/orber_iiop_outproxy.erl @@ -112,7 +112,8 @@ stop(Pid) -> %%----------------------------------------------------------------- init({connect, Host, Port, SocketType, SocketOptions, Parent, Key, NewKey}) -> process_flag(trap_exit, true), - case catch orber_socket:connect(SocketType, Host, Port, SocketOptions) of + case catch orber_socket:connect(SocketType, Host, Port, + get_ip_family_opts(Host) ++ SocketOptions) of {'EXCEPTION', _E} -> ignore; %% We used to reply the below but since this would generate a CRASH REPORT @@ -507,3 +508,38 @@ clear_queue(Proxy, RequestId, MRef) -> end end. +get_ip_family_opts(Host) -> + case inet:parse_address(Host) of + {ok, {_,_,_,_}} -> + [inet]; + {ok, {_,_,_,_,_,_,_,_}} -> + [inet6]; + {error, einval} -> + check_family_for_name(Host, orber_env:ip_version()) + end. + +check_family_for_name(Host, inet) -> + case inet:getaddr(Host, inet) of + {ok, _Address} -> + [inet]; + {error, _} -> + case inet:getaddrs(Host, inet6) of + {ok, _Address} -> + [inet6]; + {error, _} -> + [inet] + end + end; +check_family_for_name(Host, inet6) -> + case inet:getaddr(Host, inet6) of + {ok, _Address} -> + [inet6]; + {error, _} -> + case inet:getaddr(Host, inet) of + {ok, _Address} -> + [inet]; + {error, _} -> + [inet6] + end + end. + |