---
 src/service.c |   13 +++++++++++--
 src/wpad.c    |    6 ++++++
 2 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/src/service.c b/src/service.c
index 8ec06c7..9b45d67 100644
--- a/src/service.c
+++ b/src/service.c
@@ -3589,6 +3589,8 @@ static int __connman_service_indicate_state(struct 
connman_service *service)
 
                default_changed();
 
+               __connman_wispr_stop(service);
+
                __connman_wpad_stop(service);
 
                update_nameservers(service);
@@ -3693,17 +3695,22 @@ static void check_proxy_setup(struct connman_service 
*service)
         */
 
        if (service->proxy != CONNMAN_SERVICE_PROXY_METHOD_UNKNOWN)
-               return;
+               goto done;
 
        if (service->proxy_config != CONNMAN_SERVICE_PROXY_METHOD_UNKNOWN &&
                (service->proxy_config != CONNMAN_SERVICE_PROXY_METHOD_AUTO ||
                        service->pac != NULL))
-               return;
+               goto done;
 
        if (__connman_wpad_start(service) < 0) {
                service->proxy = CONNMAN_SERVICE_PROXY_METHOD_DIRECT;
                __connman_notifier_proxy_changed(service);
        }
+
+       return;
+
+done:
+       __connman_wispr_start(service, CONNMAN_IPCONFIG_TYPE_IPV4);
 }
 
 int __connman_service_ipconfig_indicate_state(struct connman_service *service,
@@ -3752,6 +3759,8 @@ int __connman_service_ipconfig_indicate_state(struct 
connman_service *service,
 
                if (type == CONNMAN_IPCONFIG_TYPE_IPV4)
                        check_proxy_setup(service);
+               else
+                       __connman_wispr_start(service, type);
                break;
        case CONNMAN_SERVICE_STATE_ONLINE:
                break;
diff --git a/src/wpad.c b/src/wpad.c
index 0069c49..931423c 100644
--- a/src/wpad.c
+++ b/src/wpad.c
@@ -85,6 +85,9 @@ static void wpad_result(GResolvResultStatus status,
 
                g_free(url);
 
+               __connman_wispr_start(wpad->service,
+                                       CONNMAN_IPCONFIG_TYPE_IPV4);
+
                return;
        }
 
@@ -113,6 +116,9 @@ static void wpad_result(GResolvResultStatus status,
 failed:
        connman_service_set_proxy_method(wpad->service,
                                CONNMAN_SERVICE_PROXY_METHOD_DIRECT);
+
+       __connman_wispr_start(wpad->service,
+                                       CONNMAN_IPCONFIG_TYPE_IPV4);
 }
 
 int __connman_wpad_start(struct connman_service *service)
-- 
1.7.3.4

_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman

Reply via email to