aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRaimo Niskanen <[email protected]>2016-05-25 14:38:46 +0200
committerRaimo Niskanen <[email protected]>2016-05-25 14:38:46 +0200
commitca9ecbb1fb04a80bd849d866b750090975f501f3 (patch)
tree72b1bd800215fcc479f9ae24dc484a0ef0fdee8e
parent7a03eab1dd3ce2a1f9b4f7eae09d62f1ea48f401 (diff)
parent5d7dcfc2e0de7e93b29d01f07a2f970720d62f9d (diff)
downloadotp-ca9ecbb1fb04a80bd849d866b750090975f501f3.tar.gz
otp-ca9ecbb1fb04a80bd849d866b750090975f501f3.tar.bz2
otp-ca9ecbb1fb04a80bd849d866b750090975f501f3.zip
Merge branch 'dcsommer/kernel/inet-gethostbyname-res-option-inet6/PR-1065/OTP-13622'
* dcsommer/kernel/inet-gethostbyname-res-option-inet6/PR-1065/OTP-13622: Make inet:gethostbyname respect resolver option `inet6`
-rw-r--r--lib/kernel/doc/src/inet.xml7
-rw-r--r--lib/kernel/src/inet.erl7
2 files changed, 11 insertions, 3 deletions
diff --git a/lib/kernel/doc/src/inet.xml b/lib/kernel/doc/src/inet.xml
index bca04aa244..5ff167bcb3 100644
--- a/lib/kernel/doc/src/inet.xml
+++ b/lib/kernel/doc/src/inet.xml
@@ -11,7 +11,7 @@
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
-
+
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
@@ -207,6 +207,10 @@ fe80::204:acff:fe17:bf38
<desc>
<p>Returns a <c>hostent</c> record for the host with the specified
hostname.</p>
+ <p>If resolver option <c>inet6</c> is <c>true</c>,
+ an IPv6 address is looked up. If that fails,
+ the IPv4 address is looked up and returned on
+ IPv6-mapped IPv4 format.</p>
</desc>
</func>
@@ -1267,4 +1271,3 @@ inet:setopts(Sock,[{raw,6,8,<<30:32/native>>}]),]]></code>
</list>
</section>
</erlref>
-
diff --git a/lib/kernel/src/inet.erl b/lib/kernel/src/inet.erl
index c1ae99ea24..713a9cf725 100644
--- a/lib/kernel/src/inet.erl
+++ b/lib/kernel/src/inet.erl
@@ -439,7 +439,12 @@ getstat(Socket,What) ->
Hostent :: hostent().
gethostbyname(Name) ->
- gethostbyname_tm(Name, inet, false).
+ case inet_db:res_option(inet6) of
+ true ->
+ gethostbyname_tm(Name, inet6, false);
+ false ->
+ gethostbyname_tm(Name, inet, false)
+ end.
-spec gethostbyname(Hostname, Family) ->
{ok, Hostent} | {error, posix()} when