From 5d7dcfc2e0de7e93b29d01f07a2f970720d62f9d Mon Sep 17 00:00:00 2001
From: Daniel Sommermann <dcsommer@whatsapp.com>
Date: Fri, 20 May 2016 15:47:16 -0700
Subject: Make inet:gethostbyname respect resolver option `inet6`

This makes the implementation text of inet:gethostbyname/1 identical to
that of inet_res:gethostbyname/1. I also copied over the doc note about
this resolver option.
---
 lib/kernel/doc/src/inet.xml | 7 +++++--
 lib/kernel/src/inet.erl     | 7 ++++++-
 2 files changed, 11 insertions(+), 3 deletions(-)

(limited to 'lib')

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
-- 
cgit v1.2.3