diff options
author | Dan Winship <danw@src.gnome.org> | 2008-04-05 20:27:28 +0000 |
---|---|---|
committer | Dan Winship <danw@src.gnome.org> | 2008-04-05 20:27:28 +0000 |
commit | fc42d8acf7fb64c71aae7db3480f4f121eb2baa3 (patch) | |
tree | 276819b06373fe4a0554194527a85dadd39903cc | |
parent | 797462000d2e977db154d3eae120a308f18a8085 (diff) | |
download | libsoup-fc42d8acf7fb64c71aae7db3480f4f121eb2baa3.tar.gz |
Don't cache negative results, even if the DNS server explicitly states
* 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
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | libsoup/soup-dns.c | 14 |
2 files changed, 12 insertions, 10 deletions
@@ -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 diff --git a/libsoup/soup-dns.c b/libsoup/soup-dns.c index f3c77499..34fc399a 100644 --- a/libsoup/soup-dns.c +++ b/libsoup/soup-dns.c @@ -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); |