Make sure we cancel proxy request if we got disconnected and still waiting for proxy request. --- plugins/portal.c | 14 ++++++++------ 1 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/plugins/portal.c b/plugins/portal.c index f1d5ce3..8450443 100644 --- a/plugins/portal.c +++ b/plugins/portal.c @@ -39,6 +39,7 @@ #define STATUS_URL "http://www.connman.net/online/status.html" struct server_data { + unsigned int token; GWeb *web; guint request_id; }; @@ -97,13 +98,12 @@ static void proxy_callback(const char *proxy, void *user_data) data->request_id = g_web_request_get(data->web, STATUS_URL, web_result, location); } - - connman_location_unref(location); } static int location_detect(struct connman_location *location) { struct server_data *data; + struct connman_service *service; enum connman_service_type service_type; const char *interface; int err; @@ -151,13 +151,12 @@ static int location_detect(struct connman_location *location) g_web_set_user_agent(data->web, "ConnMan/%s", VERSION); g_web_set_close_connection(data->web, TRUE); - err = connman_proxy_lookup(interface, STATUS_URL, - proxy_callback, location); + service = connman_location_get_service(location); + err = connman_proxy_lookup(interface, STATUS_URL, service, + proxy_callback, location); if (err < 0) return err; - connman_location_ref(location); - return 0; } @@ -172,6 +171,9 @@ static int location_finish(struct connman_location *location) if (data->request_id > 0) g_web_cancel_request(data->web, data->request_id); + if (data->token > 0) + connman_proxy_lookup_cancel(data->token); + g_web_unref(data->web); g_free(data); -- 1.7.2.3 _______________________________________________ connman mailing list [email protected] http://lists.connman.net/listinfo/connman
