From: Daniel Wagner <[email protected]>

The aim is to remove all clutter in struct service_entry.

Since service name, type and also bearer information can be
retrieved at runtime and is used only for the D-Bus API.
Therefore there is no need to maintain a cached version of
this information.
---
 src/session.c | 49 ++++++++++++++++++++-----------------------------
 1 file changed, 20 insertions(+), 29 deletions(-)

diff --git a/src/session.c b/src/session.c
index 8dc4576..c184dbb 100644
--- a/src/session.c
+++ b/src/session.c
@@ -65,10 +65,7 @@ struct service_entry {
        /* track why this service was selected */
        enum connman_session_reason reason;
        enum connman_service_state state;
-       const char *name;
        struct connman_service *service;
-       char *ifname;
-       const char *bearer;
 };
 
 struct session_info {
@@ -859,7 +856,10 @@ static void append_notify(DBusMessageIter *dict,
        struct session_info *info = session->info;
        struct session_info *info_last = session->info_last;
        struct connman_service *service;
-       const char *name, *ifname, *bearer;
+       enum connman_service_type type;
+       const char *name, *bearer;
+       char *ifname;
+       int idx;
 
        if (session->append_all ||
                        info->state != info_last->state) {
@@ -873,16 +873,21 @@ static void append_notify(DBusMessageIter *dict,
 
        if (session->append_all ||
                        info->entry != info_last->entry) {
-               if (!info->entry) {
-                       name = "";
-                       ifname = "";
+               if (info->entry) {
+                       service = info->entry->service;
+                       name = __connman_service_get_name(service);
+                       idx = __connman_service_get_index(service);
+                       ifname = connman_inet_ifname(idx);
+                       if (!ifname)
+                               ifname = g_strdup("");
+
+                       type = connman_service_get_type(service);
+                       bearer = service2bearer(type);
+               } else {
                        service = NULL;
+                       name = "";
+                       ifname = g_strdup("");
                        bearer = "";
-               } else {
-                       name = info->entry->name;
-                       ifname = info->entry->ifname;
-                       service = info->entry->service;
-                       bearer = info->entry->bearer;
                }
 
                connman_dbus_dict_append_basic(dict, "Name",
@@ -905,6 +910,8 @@ static void append_notify(DBusMessageIter *dict,
                                                DBUS_TYPE_STRING,
                                                &bearer);
 
+               g_free(ifname);
+
                info_last->entry = info->entry;
        }
 
@@ -1355,8 +1362,6 @@ static struct service_entry *create_service_entry(
                                        enum connman_service_state state)
 {
        struct service_entry *entry;
-       enum connman_service_type type;
-       int idx;
 
        entry = g_try_new0(struct service_entry, 1);
        if (!entry)
@@ -1364,20 +1369,8 @@ static struct service_entry *create_service_entry(
 
        entry->reason = CONNMAN_SESSION_REASON_UNKNOWN;
        entry->state = state;
-       if (name)
-               entry->name = name;
-       else
-               entry->name = "";
        entry->service = service;
 
-       idx = __connman_service_get_index(entry->service);
-       entry->ifname = connman_inet_ifname(idx);
-       if (!entry->ifname)
-               entry->ifname = g_strdup("");
-
-       type = connman_service_get_type(entry->service);
-       entry->bearer = service2bearer(type);
-
        entry->session = session;
 
        return entry;
@@ -1415,8 +1408,6 @@ static void destroy_service_entry(gpointer data)
                deselect_and_disconnect(session);
        }
 
-       g_free(entry->ifname);
-
        g_free(entry);
 }
 
@@ -1437,7 +1428,7 @@ static void populate_service_list(struct connman_session 
*session)
 
                DBG("service %p type %s name %s", entry->service,
                        
service2bearer(connman_service_get_type(entry->service)),
-                       entry->name);
+                       __connman_service_get_name(entry->service));
                session->service_list = g_list_prepend(session->service_list,
                                                        entry);
        }
-- 
1.8.4.rc0.1.g8f6a3e5

_______________________________________________
connman mailing list
[email protected]
https://lists.connman.net/mailman/listinfo/connman

Reply via email to