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

Reply via email to