From 25d62c6414a3e366e074bf0462b953f22a06828f Mon Sep 17 00:00:00 2001 From: Tomasz Bursztyka Date: Tue, 19 Jul 2011 13:56:19 +0300 Subject: service: wpad only run on ipv4 --- src/service.c | 44 ++++++++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/src/service.c b/src/service.c index 792c5042..b8f6aac6 100644 --- a/src/service.c +++ b/src/service.c @@ -3635,13 +3635,34 @@ int __connman_service_indicate_default(struct connman_service *service) return 0; } +static void check_proxy_setup(struct connman_service *service) +{ + /* + * We start WPAD if we haven't got a PAC URL from DHCP and + * if our proxy manual configuration is either empty or set + * to AUTO with an empty URL. + */ + + if (service->proxy != CONNMAN_SERVICE_PROXY_METHOD_UNKNOWN) + return; + + if (service->proxy_config != CONNMAN_SERVICE_PROXY_METHOD_UNKNOWN && + (service->proxy_config != CONNMAN_SERVICE_PROXY_METHOD_AUTO || + service->pac != NULL)) + return; + + if (__connman_wpad_start(service) < 0) { + service->proxy = CONNMAN_SERVICE_PROXY_METHOD_DIRECT; + __connman_notifier_proxy_changed(service); + } +} + int __connman_service_ipconfig_indicate_state(struct connman_service *service, enum connman_service_state new_state, enum connman_ipconfig_type type) { struct connman_ipconfig *ipconfig = NULL; enum connman_service_state old_state; - enum connman_service_proxy_method proxy_config; if (service == NULL) return -EINVAL; @@ -3680,25 +3701,8 @@ int __connman_service_ipconfig_indicate_state(struct connman_service *service, case CONNMAN_SERVICE_STATE_READY: update_nameservers(service); - proxy_config = service->proxy_config; - - /* - * We start WPAD if we haven't got a PAC URL from DHCP and - * if our proxy manual configuration is either empty or set - * to AUTO with an empty URL. - */ - if (service->proxy == CONNMAN_SERVICE_PROXY_METHOD_UNKNOWN && - (proxy_config == CONNMAN_SERVICE_PROXY_METHOD_UNKNOWN || - (proxy_config == - CONNMAN_SERVICE_PROXY_METHOD_AUTO && - service->pac == NULL))) - if (__connman_wpad_start(service) < 0) { - service->proxy = - CONNMAN_SERVICE_PROXY_METHOD_DIRECT; - - __connman_notifier_proxy_changed(service); - } - + if (type == CONNMAN_IPCONFIG_TYPE_IPV4) + check_proxy_setup(service); break; case CONNMAN_SERVICE_STATE_ONLINE: break; -- cgit v1.2.3