X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fproxy.c;h=e1bc420a92698c97197f3295f690247bc9d04bcd;hb=refs%2Fheads%2Faccepted%2Ftizen_unified;hp=fd58a70baeaa811eb2111ca2a88a5827de168422;hpb=ef636ec730a51d3468870546ab6844b270e5b79a;p=platform%2Fupstream%2Fconnman.git diff --git a/src/proxy.c b/src/proxy.c old mode 100644 new mode 100755 index fd58a70..e1bc420 --- a/src/proxy.c +++ b/src/proxy.c @@ -44,6 +44,9 @@ struct proxy_lookup { static void remove_lookup(struct proxy_lookup *lookup) { + if (lookup->watch > 0) + g_source_remove(lookup->watch); + lookup_list = g_slist_remove(lookup_list, lookup); connman_service_unref(lookup->service); @@ -69,7 +72,7 @@ static gboolean lookup_callback(gpointer user_data) struct proxy_lookup *lookup = user_data; GSList *list; - if (lookup == NULL) + if (!lookup) return FALSE; lookup->watch = 0; @@ -77,14 +80,14 @@ static gboolean lookup_callback(gpointer user_data) for (list = driver_list; list; list = list->next) { struct connman_proxy_driver *proxy = list->data; - if (proxy->request_lookup == NULL) + if (!proxy->request_lookup) continue; lookup->proxy = proxy; break; } - if (lookup->proxy == NULL || + if (!lookup->proxy || lookup->proxy->request_lookup(lookup->service, lookup->url) < 0) { @@ -106,11 +109,11 @@ unsigned int connman_proxy_lookup(const char *interface, const char *url, DBG("interface %s url %s", interface, url); - if (interface == NULL) + if (!interface) return 0; lookup = g_try_new0(struct proxy_lookup, 1); - if (lookup == NULL) + if (!lookup) return 0; lookup->token = next_lookup_token++; @@ -120,7 +123,7 @@ unsigned int connman_proxy_lookup(const char *interface, const char *url, lookup->url = g_strdup(url); lookup->service = connman_service_ref(service); - lookup->watch = g_timeout_add_seconds(0, lookup_callback, lookup); + lookup->watch = g_idle_add(lookup_callback, lookup); if (lookup->watch == 0) { g_free(lookup->url); g_free(lookup); @@ -128,7 +131,7 @@ unsigned int connman_proxy_lookup(const char *interface, const char *url, } DBG("token %u", lookup->token); - lookup_list = g_slist_append(lookup_list, lookup); + lookup_list = g_slist_prepend(lookup_list, lookup); return lookup->token; } @@ -145,16 +148,13 @@ void connman_proxy_lookup_cancel(unsigned int token) if (lookup->token == token) break; - } - if (lookup != NULL) { - if (lookup->watch > 0) { - g_source_remove(lookup->watch); - lookup->watch = 0; - } + lookup = NULL; + } - if (lookup->proxy != NULL && - lookup->proxy->cancel_lookup != NULL) + if (lookup) { + if (lookup->proxy && + lookup->proxy->cancel_lookup) lookup->proxy->cancel_lookup(lookup->service, lookup->url); @@ -163,7 +163,7 @@ void connman_proxy_lookup_cancel(unsigned int token) } void connman_proxy_driver_lookup_notify(struct connman_service *service, - const char *url, const char *result) + const char *url, const char *result) { GSList *list, *matches = NULL; @@ -179,11 +179,11 @@ void connman_proxy_driver_lookup_notify(struct connman_service *service, if (lookup->cb) lookup->cb(result, lookup->user_data); - matches = g_slist_append(matches, lookup); + matches = g_slist_prepend(matches, lookup); } } - if (matches != NULL) + if (matches) remove_lookups(matches); }