summaryrefslogtreecommitdiff
path: root/src/wpad.c
diff options
context:
space:
mode:
authorSamuel Ortiz <sameo@linux.intel.com>2011-01-12 02:07:03 +0100
committerSamuel Ortiz <sameo@linux.intel.com>2011-01-13 00:37:10 +0100
commit3243f3966e4f05801a443e3893ac8551a47ec4b1 (patch)
tree9e203e7ee3154a186b711cf0a8a188f1cca2a716 /src/wpad.c
parent56d1e7231d4e7c371de3f4b7422f7a406402a054 (diff)
downloadconnman-3243f3966e4f05801a443e3893ac8551a47ec4b1.tar.gz
connman-3243f3966e4f05801a443e3893ac8551a47ec4b1.tar.bz2
connman-3243f3966e4f05801a443e3893ac8551a47ec4b1.zip
wpad: Set proxy method to DIRECT if WPAD name resolution failed
Diffstat (limited to 'src/wpad.c')
-rw-r--r--src/wpad.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/wpad.c b/src/wpad.c
index e10b275a..1102dad3 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)