X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fwpad.c;h=f50e4dd0e8664ac2d6a5eec3c80df7856bb331a7;hb=26cc90dfaf2ad149b702626f9552c81abbb26862;hp=e6d77e7dcbd19b5e40e579ff40fb6b4650323773;hpb=70ce3cd0a6130605a5f3c1f4f334bd501bece184;p=platform%2Fupstream%2Fconnman.git diff --git a/src/wpad.c b/src/wpad.c old mode 100644 new mode 100755 index e6d77e7..f50e4dd --- a/src/wpad.c +++ b/src/wpad.c @@ -2,7 +2,7 @@ * * Connection Manager * - * Copyright (C) 2007-2010 Intel Corporation. All rights reserved. + * Copyright (C) 2007-2012 Intel Corporation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as @@ -49,11 +49,13 @@ static void free_wpad(gpointer data) { struct connman_wpad *wpad = data; + connman_service_unref(wpad->service); + g_resolv_unref(wpad->resolv); g_strfreev(wpad->addrlist); g_free(wpad->hostname); - g_free(wpad); + g_free(wpad); } static void download_pac(struct connman_wpad *wpad, const char *target) @@ -72,7 +74,7 @@ static void wpad_result(GResolvResultStatus status, if (status == G_RESOLV_RESULT_STATUS_SUCCESS) { char *url; - if (results == NULL || g_strv_length(results) == 0) + if (!results || g_strv_length(results) == 0) goto failed; url = g_strdup_printf("http://%s/wpad.dat", wpad->hostname); @@ -80,12 +82,12 @@ static void wpad_result(GResolvResultStatus status, __connman_service_set_proxy_autoconfig(wpad->service, url); wpad->addrlist = g_strdupv(results); - if (wpad->addrlist != NULL) + if (wpad->addrlist) download_pac(wpad, "wpad.dat"); g_free(url); - __connman_wispr_start(wpad->service, + __connman_service_wispr_start(wpad->service, CONNMAN_IPCONFIG_TYPE_IPV4); return; @@ -97,10 +99,10 @@ static void wpad_result(GResolvResultStatus status, goto failed; ptr = strchr(hostname + 5, '.'); - if (ptr == NULL || strlen(ptr) < 2) + if (!ptr || strlen(ptr) < 2) goto failed; - if (strchr(ptr + 1, '.') == NULL) + if (!strchr(ptr + 1, '.')) goto failed; wpad->hostname = g_strdup_printf("wpad.%s", ptr + 1); @@ -117,7 +119,7 @@ failed: connman_service_set_proxy_method(wpad->service, CONNMAN_SERVICE_PROXY_METHOD_DIRECT); - __connman_wispr_start(wpad->service, + __connman_service_wispr_start(wpad->service, CONNMAN_IPCONFIG_TYPE_IPV4); } @@ -131,7 +133,7 @@ int __connman_wpad_start(struct connman_service *service) DBG("service %p", service); - if (wpad_list == NULL) + if (!wpad_list) return -EINVAL; index = __connman_service_get_index(service); @@ -139,31 +141,32 @@ int __connman_wpad_start(struct connman_service *service) return -EINVAL; domainname = connman_service_get_domainname(service); - if (domainname == NULL) + if (!domainname) return -EINVAL; nameservers = connman_service_get_nameservers(service); - if (nameservers == NULL) + if (!nameservers) return -EINVAL; wpad = g_try_new0(struct connman_wpad, 1); - if (wpad == NULL) { + if (!wpad) { g_strfreev(nameservers); return -ENOMEM; } - wpad->service = service; wpad->resolv = g_resolv_new(index); - if (wpad->resolv == NULL) { + if (!wpad->resolv) { g_strfreev(nameservers); g_free(wpad); return -ENOMEM; } +#if !defined TIZEN_EXT if (getenv("CONNMAN_RESOLV_DEBUG")) +#endif g_resolv_set_debug(wpad->resolv, resolv_debug, "RESOLV"); - for (i = 0; nameservers[i] != NULL; i++) + for (i = 0; nameservers[i]; i++) g_resolv_add_nameserver(wpad->resolv, nameservers[i], 53, 0); g_strfreev(nameservers); @@ -172,10 +175,11 @@ int __connman_wpad_start(struct connman_service *service) DBG("hostname %s", wpad->hostname); + wpad->service = connman_service_ref(service); + g_resolv_lookup_hostname(wpad->resolv, wpad->hostname, wpad_result, wpad); - connman_service_ref(service); g_hash_table_replace(wpad_list, GINT_TO_POINTER(index), wpad); return 0; @@ -187,15 +191,14 @@ void __connman_wpad_stop(struct connman_service *service) DBG("service %p", service); - if (wpad_list == NULL) + if (!wpad_list) return; index = __connman_service_get_index(service); if (index < 0) return; - if (g_hash_table_remove(wpad_list, GINT_TO_POINTER(index)) == TRUE) - connman_service_unref(service); + g_hash_table_remove(wpad_list, GINT_TO_POINTER(index)); } int __connman_wpad_init(void)