From: Jukka Rissanen Date: Tue, 5 Jun 2012 08:24:05 +0000 (+0300) Subject: service: Add function to remove a service X-Git-Tag: 2.0_alpha~107 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e9070381b7fda94a771376783336c699165e1787;p=framework%2Fconnectivity%2Fconnman.git service: Add function to remove a service --- diff --git a/src/connman.h b/src/connman.h index 5f55263..fb2be57 100644 --- a/src/connman.h +++ b/src/connman.h @@ -620,6 +620,7 @@ int __connman_service_connect(struct connman_service *service); int __connman_service_disconnect(struct connman_service *service); int __connman_service_disconnect_all(void); void __connman_service_auto_connect(void); +gboolean __connman_service_remove(struct connman_service *service); void __connman_service_provision_changed(const char *ident); void __connman_service_set_config(struct connman_service *service, diff --git a/src/service.c b/src/service.c index b210dff..c9ee004 100644 --- a/src/service.c +++ b/src/service.c @@ -3556,22 +3556,17 @@ static DBusMessage *disconnect_service(DBusConnection *conn, return g_dbus_create_reply(msg, DBUS_TYPE_INVALID); } -static DBusMessage *remove_service(DBusConnection *conn, - DBusMessage *msg, void *user_data) +gboolean __connman_service_remove(struct connman_service *service) { - struct connman_service *service = user_data; - - DBG("service %p", service); - if (service->type == CONNMAN_SERVICE_TYPE_ETHERNET) - return __connman_error_not_supported(msg); + return FALSE; if (service->immutable == TRUE || service->hidden == TRUE) - return __connman_error_not_supported(msg); + return FALSE; if (service->favorite == FALSE && service->state != CONNMAN_SERVICE_STATE_FAILURE) - return __connman_error_not_supported(msg); + return FALSE; set_reconnect_state(service, FALSE); @@ -3580,11 +3575,37 @@ static DBusMessage *remove_service(DBusConnection *conn, g_free(service->passphrase); service->passphrase = NULL; + g_free(service->agent_passphrase); + service->agent_passphrase = NULL; + + g_free(service->identity); + service->identity = NULL; + + g_free(service->agent_identity); + service->agent_identity = NULL; + + g_free(service->eap); + service->eap = NULL; + set_idle(service); __connman_service_set_favorite(service, FALSE); + service_save(service); + return TRUE; +} + +static DBusMessage *remove_service(DBusConnection *conn, + DBusMessage *msg, void *user_data) +{ + struct connman_service *service = user_data; + + DBG("service %p", service); + + if (__connman_service_remove(service) == FALSE) + return __connman_error_not_supported(msg); + return g_dbus_create_reply(msg, DBUS_TYPE_INVALID); }