diff options
author | Patrik Flykt <patrik.flykt@linux.intel.com> | 2012-09-13 16:44:13 +0300 |
---|---|---|
committer | Patrik Flykt <patrik.flykt@linux.intel.com> | 2012-09-28 15:05:57 +0300 |
commit | f502fb73966de33e6e8d2676cc5083e19349f165 (patch) | |
tree | dd32d1573e35fe561d8a2732f44f42325934265d | |
parent | e35e1cf8c7d5be8c04ff21760568e80055b68d24 (diff) | |
download | connman-f502fb73966de33e6e8d2676cc5083e19349f165.tar.gz connman-f502fb73966de33e6e8d2676cc5083e19349f165.tar.bz2 connman-f502fb73966de33e6e8d2676cc5083e19349f165.zip |
wispr: Free wispr portal context struct instead of unreferencing it
The structure can now be directly freed, since the reference count
is always one. As a result, remove wispr_portal_context_unref()
function.
-rw-r--r-- | src/wispr.c | 49 |
1 files changed, 9 insertions, 40 deletions
diff --git a/src/wispr.c b/src/wispr.c index 4001ba0d..1854c2dc 100644 --- a/src/wispr.c +++ b/src/wispr.c @@ -33,9 +33,6 @@ #define STATUS_URL_IPV4 "http://ipv4.connman.net/online/status.html" #define STATUS_URL_IPV6 "http://ipv6.connman.net/online/status.html" -#define wispr_portal_context_unref(_wp_ctxt) \ - wispr_portal_context_unref_debug(_wp_ctxt, __FILE__, __LINE__, __func__) - struct connman_wispr_message { gboolean has_error; const char *current_element; @@ -62,8 +59,6 @@ struct wispr_route { }; struct connman_wispr_portal_context { - int refcount; - struct connman_service *service; enum connman_ipconfig_type type; struct connman_wispr_portal *wispr_portal; @@ -201,32 +196,9 @@ static void free_connman_wispr_portal_context(struct connman_wispr_portal_contex g_free(wp_context); } -static struct connman_wispr_portal_context * -wispr_portal_context_unref_debug(struct connman_wispr_portal_context *wp_context, - const char *file, int line, const char *caller) -{ - DBG("%p ref %d by %s:%d:%s()", wp_context, wp_context->refcount - 1, - file, line, caller); - - if (__sync_fetch_and_sub(&wp_context->refcount, 1) != 1) - return wp_context; - - free_connman_wispr_portal_context(wp_context); - - return NULL; -} - static struct connman_wispr_portal_context *create_wispr_portal_context(void) { - struct connman_wispr_portal_context *wp_context = NULL; - - wp_context = g_try_new0(struct connman_wispr_portal_context, 1); - if (wp_context == NULL) - return NULL; - - wp_context->refcount = 1; - - return wp_context; + return g_try_new0(struct connman_wispr_portal_context, 1); } static void free_connman_wispr_portal(gpointer data) @@ -238,11 +210,8 @@ static void free_connman_wispr_portal(gpointer data) if (wispr_portal == NULL) return; - if (wispr_portal->ipv4_context != NULL) - wispr_portal_context_unref(wispr_portal->ipv4_context); - - if (wispr_portal->ipv6_context != NULL) - wispr_portal_context_unref(wispr_portal->ipv6_context); + free_connman_wispr_portal_context(wispr_portal->ipv4_context); + free_connman_wispr_portal_context(wispr_portal->ipv6_context); g_free(wispr_portal); } @@ -608,7 +577,7 @@ static void wispr_portal_request_wispr_login(struct connman_service *service, wispr_portal_browser_reply_cb, wp_context->redirect_url, wp_context) != -EINPROGRESS) - wispr_portal_context_unref(wp_context); + free_connman_wispr_portal_context(wp_context); return; } @@ -665,7 +634,7 @@ static gboolean wispr_manage_message(GWebResult *result, wispr_portal_request_wispr_login, wp_context) != -EINPROGRESS) { wispr_portal_error(wp_context); - wispr_portal_context_unref(wp_context); + free_connman_wispr_portal_context(wp_context); } break; @@ -737,7 +706,7 @@ static gboolean wispr_portal_web_result(GWebResult *result, gpointer user_data) if (g_web_result_get_header(result, "X-ConnMan-Status", &str) == TRUE) { portal_manage_status(result, wp_context); - wispr_portal_context_unref(wp_context); + free_connman_wispr_portal_context(wp_context); return FALSE; } else @@ -771,7 +740,7 @@ static gboolean wispr_portal_web_result(GWebResult *result, gpointer user_data) if (__connman_service_online_check_failed(wp_context->service, wp_context->type) == 0) { wispr_portal_error(wp_context); - wispr_portal_context_unref(wp_context); + free_connman_wispr_portal_context(wp_context); return FALSE; } @@ -905,7 +874,7 @@ static int wispr_portal_detect(struct connman_wispr_portal_context *wp_context) if (wp_context->token == 0) { err = -EINVAL; - wispr_portal_context_unref(wp_context); + free_connman_wispr_portal_context(wp_context); } } else { g_timeout_add_seconds(0, no_proxy_callback, wp_context); @@ -954,7 +923,7 @@ int __connman_wispr_start(struct connman_service *service, /* If there is already an existing context, we wipe it */ if (wp_context != NULL) - wispr_portal_context_unref(wp_context); + free_connman_wispr_portal_context(wp_context); wp_context = create_wispr_portal_context(); if (wp_context == NULL) |