diff options
-rw-r--r-- | src/connman.h | 2 | ||||
-rw-r--r-- | src/service.c | 4 | ||||
-rw-r--r-- | src/wpad.c | 16 |
3 files changed, 13 insertions, 9 deletions
diff --git a/src/connman.h b/src/connman.h index b58f9039..7c1395b6 100644 --- a/src/connman.h +++ b/src/connman.h @@ -290,7 +290,7 @@ gboolean __connman_connection_update_gateway(void); int __connman_wpad_init(void); void __connman_wpad_cleanup(void); -void __connman_wpad_start(struct connman_service *service); +int __connman_wpad_start(struct connman_service *service); void __connman_wpad_stop(struct connman_service *service); int __connman_wispr_init(void); diff --git a/src/service.c b/src/service.c index caee9736..a99b9191 100644 --- a/src/service.c +++ b/src/service.c @@ -3134,7 +3134,9 @@ int __connman_service_indicate_state(struct connman_service *service, (proxy_config == CONNMAN_SERVICE_PROXY_METHOD_AUTO && service->pac == NULL))) - __connman_wpad_start(service); + if (__connman_wpad_start(service) < 0) + service->proxy = + CONNMAN_SERVICE_PROXY_METHOD_DIRECT; __connman_notifier_connect(service->type); @@ -114,7 +114,7 @@ failed: CONNMAN_SERVICE_PROXY_METHOD_DIRECT); } -void __connman_wpad_start(struct connman_service *service) +int __connman_wpad_start(struct connman_service *service) { struct connman_wpad *wpad; const char *domainname, *nameserver; @@ -123,29 +123,29 @@ void __connman_wpad_start(struct connman_service *service) DBG("service %p", service); if (wpad_list == NULL) - return; + return -EINVAL; index = __connman_service_get_index(service); if (index < 0) - return; + return -EINVAL; domainname = connman_service_get_domainname(service); if (domainname == NULL) - return; + return -EINVAL; nameserver = connman_service_get_nameserver(service); if (nameserver == NULL) - return; + return -EINVAL; wpad = g_try_new0(struct connman_wpad, 1); if (wpad == NULL) - return; + return -ENOMEM; wpad->service = service; wpad->resolv = g_resolv_new(index); if (wpad->resolv == NULL) { g_free(wpad); - return; + return -ENOMEM; } if (getenv("CONNMAN_RESOLV_DEBUG")) @@ -161,6 +161,8 @@ void __connman_wpad_start(struct connman_service *service) wpad_result, wpad); g_hash_table_replace(wpad_list, GINT_TO_POINTER(index), wpad); + + return 0; } void __connman_wpad_stop(struct connman_service *service) |