Index: /trunk/src/VBox/Devices/Network/slirp/slirp.c
===================================================================
--- /trunk/src/VBox/Devices/Network/slirp/slirp.c	(revision 50668)
+++ /trunk/src/VBox/Devices/Network/slirp/slirp.c	(revision 50669)
@@ -359,10 +359,4 @@
     inet_aton("127.0.0.1", &loopback_addr);
 
-    if (!fUseHostResolver)
-    {
-        rc = slirpInitializeDnsSettings(pData);
-        AssertRCReturn(rc, VINF_NAT_DNS);
-    }
-
     rc = slirpTftpInit(pData);
     AssertRCReturn(rc, VINF_NAT_DNS);
@@ -452,5 +446,12 @@
 {
     struct arp_cache_entry *ac;
+    
+    if (link_up == 1)
+        return;
+
     link_up = 1;
+
+    if (!pData->fUseHostResolverPermanent)
+        slirpInitializeDnsSettings(pData);
 
     if (LIST_EMPTY(&pData->arp_cache))
@@ -471,4 +472,9 @@
     struct port_forward_rule *rule;
 
+    if (link_up == 0)
+        return;
+
+    slirpReleaseDnsSettings(pData);
+    
     while ((so = tcb.so_next) != &tcb)
     {
@@ -508,5 +514,4 @@
 
     slirp_link_down(pData);
-    slirpReleaseDnsSettings(pData);
     ftp_alias_unload(pData);
     nbt_alias_unload(pData);
