diff --git a/secure/simul_efun/query_ip_name.c b/secure/simul_efun/query_ip_name.c
index 222fd26..4ad213e 100644
--- a/secure/simul_efun/query_ip_name.c
+++ b/secure/simul_efun/query_ip_name.c
@@ -1,12 +1,16 @@
 /* This sefun is to provide a replacement for the efuns query_ip_name() and
  * query_ip_number().
  * Feel free to add it to your mudlibs, if you have much code relying on that.
+ *
+ * The code of the helper functions originates from the driver sources, they
+ * are kept as-is intentionally.
  */
 
 #if ! __EFUN_DEFINED__(query_ip_name)
 
 #include <interactive_info.h>
 
+// (actually not used in MG)
 private varargs string _query_ip_name(object player)
 {
     object ob = player;
@@ -15,7 +19,7 @@
     return efun::interactive_info(ob, II_IP_NAME);
 }
 
-private varargs string _query_ip_number(object player)
+private varargs string int_query_ip_number(object player)
 {
     object ob = player;
     ob ||= efun::this_player();
@@ -23,22 +27,35 @@
     return efun::interactive_info(ob, II_IP_NUMBER);
 }
 
-// * Herkunfts-Ermittlung
-string query_ip_number(object ob)
+// First tries to get the "real" IP (instead of the proxy's one), which was
+// saved in the object by the login object. If that is unsuccessful, it falls
+// back to the driver information of the IP the interactive object is
+// connected to.
+public string query_ip_number(object ob)
 {
-  ob= ob || this_player();
-  if (!objectp(ob) || !interactive(ob)) return 0;
-  if(ob->query_realip() && ob->query_realip()!="")
+  ob = ob || this_player();
+  if(objectp(ob) && interactive(ob))
   {
-    return ob->query_realip();
+    string realip = ob->query_realip();
+    if (sizeof(ob->query_realip()))
+    {
+      return realip;
+    }
   }
-  return _query_ip_number(ob);
+  return int_query_ip_number(ob);
 }
 
+/* Liefert zu einer gegebenen ipnum den Hostnamen.
+ * @param ipnum eine numerische ip-adresse oder ein interactive
+ * @return den Hostnamen der zu der angegebenen ip-adresse gehoert.
+ * wenn der hostname nicht bekannt ist, wird die ipadresse zurueckgegeben.
+ */
 public string query_ip_name(string|object ob)
 {
+  // First get the IP number (as string) for the object or  a 0.
   if ( !ob || objectp(ob) )
       ob=query_ip_number(ob);
+  // then get its host name from the lookup & cache daemon.
   return "/p/daemon/iplookup"->host(ob);
 }
 
