Don't cache negative results, even if the DNS server explicitly states
authorDan Winship <danw@src.gnome.org>
Sat, 5 Apr 2008 20:27:28 +0000 (20:27 +0000)
committerDan Winship <danw@src.gnome.org>
Sat, 5 Apr 2008 20:27:28 +0000 (20:27 +0000)
* libsoup/soup-dns.c (resolve_address, resolve_name): Don't
cache negative results, even if the DNS server explicitly states
that the host does not exist; some servers give different answers
to clients inside and outside their firewall. #523269,  Jörgen
Scheibengruber.

svn path=/trunk/; revision=1127

ChangeLog
libsoup/soup-dns.c

index aa3843f..aef1bac 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
 2008-04-05  Dan Winship  <danw@gnome.org>
 
+       * libsoup/soup-dns.c (resolve_address, resolve_name): Don't
+       cache negative results, even if the DNS server explicitly states
+       that the host does not exist; some servers give different answers
+       to clients inside and outside their firewall. #523269, Jörgen
+       Scheibengruber.
+
+2008-04-05  Dan Winship  <danw@gnome.org>
+
        * libsoup/soup-message-body.c (soup_message_body_set_accumulate)
        (soup_message_body_get_accumulate): New, replaces
        SOUP_MESSAGE_OVERWRITE_CHUNKS, but can be set on either the
index f3c7749..34fc399 100644 (file)
@@ -326,8 +326,7 @@ resolve_address (SoupDNSCacheEntry *entry)
                entry->sockaddr = g_memdup (res->ai_addr, res->ai_addrlen);
                entry->resolved = TRUE;
                freeaddrinfo (res);
-       } else
-               entry->resolved = (retval != EAI_AGAIN);
+       }
 
 #else /* !HAVE_GETADDRINFO */
 
@@ -343,9 +342,7 @@ resolve_address (SoupDNSCacheEntry *entry)
                memcpy (&sin.sin_addr, h->h_addr_list[0], sizeof (struct in_addr));
                entry->sockaddr = g_memdup (&sin, sizeof (struct sockaddr_in));
                entry->resolved = TRUE;
-       } else
-               entry->resolved = (h || h_errno != TRY_AGAIN);
-
+       }
 
        g_mutex_unlock (soup_gethost_lock);
 
@@ -375,10 +372,8 @@ resolve_name (SoupDNSCacheEntry *entry)
        if (retval == 0) {
                entry->hostname = name;
                entry->resolved = TRUE;
-       } else {
+       } else
                g_free (name);
-               entry->resolved = (retval != EAI_AGAIN);
-       }
 
 #else /* !HAVE_GETNAMEINFO */
 
@@ -392,8 +387,7 @@ resolve_name (SoupDNSCacheEntry *entry)
                if (h) {
                        entry->hostname = g_strdup (h->h_name);
                        entry->resolved = TRUE;
-               } else
-                       entry->resolved = (h_errno != TRY_AGAIN);
+               }
        }
 
        g_mutex_unlock (soup_gethost_lock);