From 3243f3966e4f05801a443e3893ac8551a47ec4b1 Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Wed, 12 Jan 2011 02:07:03 +0100 Subject: [PATCH] wpad: Set proxy method to DIRECT if WPAD name resolution failed --- src/wpad.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/wpad.c b/src/wpad.c index e10b275..1102dad 100644 --- a/src/wpad.c +++ b/src/wpad.c @@ -72,7 +72,7 @@ static void wpad_result(GResolvResultStatus status, char *url; if (results == NULL || g_strv_length(results) == 0) - return; + goto failed; url = g_strdup_printf("http://%s/wpad.dat", wpad->hostname); @@ -90,14 +90,14 @@ static void wpad_result(GResolvResultStatus status, hostname = wpad->hostname; if (strlen(hostname) < 6) - return; + goto failed; ptr = strchr(hostname + 5, '.'); if (ptr == NULL || strlen(ptr) < 2) - return; + goto failed; if (strchr(ptr + 1, '.') == NULL) - return; + goto failed; wpad->hostname = g_strdup_printf("wpad.%s", ptr + 1); g_free(hostname); @@ -106,6 +106,12 @@ static void wpad_result(GResolvResultStatus status, g_resolv_lookup_hostname(wpad->resolv, wpad->hostname, wpad_result, wpad); + + return; + +failed: + connman_service_set_proxy_method(wpad->service, + CONNMAN_SERVICE_PROXY_METHOD_DIRECT); } void __connman_wpad_start(struct connman_service *service) -- 2.7.4