From: Daniel Wagner <[email protected]>

session_notify() will be called from the upcomming
new functions add_service_to_session() and remove_service_from_session().
Because the later function will be also called from
cleanup_session_final() we move those function before
cleanup_session_final() which then allows us to place the new function
between cleanup_session_final() and session_notify().
---
 src/session.c | 390 +++++++++++++++++++++++++++++-----------------------------
 1 file changed, 195 insertions(+), 195 deletions(-)

diff --git a/src/session.c b/src/session.c
index aca38ef..f57de7a 100644
--- a/src/session.c
+++ b/src/session.c
@@ -419,6 +419,201 @@ static void free_session(struct connman_session *session)
        g_free(session);
 }
 
+static void append_allowed_bearers(DBusMessageIter *iter, void *user_data)
+{
+       struct session_info *info = user_data;
+       GSList *list;
+
+       for (list = info->config.allowed_bearers;
+                       list; list = list->next) {
+               enum connman_service_type bearer = GPOINTER_TO_INT(list->data);
+               const char *name = __connman_service_type2string(bearer);
+
+               if (!name)
+                       name = "*";
+
+               dbus_message_iter_append_basic(iter, DBUS_TYPE_STRING,
+                                               &name);
+       }
+}
+
+static void append_ipconfig_ipv4(DBusMessageIter *iter, void *user_data)
+{
+       struct connman_service *service = user_data;
+       struct connman_ipconfig *ipconfig_ipv4;
+
+       if (!service)
+               return;
+
+       if (!__connman_service_is_connected_state(service,
+                                               CONNMAN_IPCONFIG_TYPE_IPV4))
+               return;
+
+       ipconfig_ipv4 = __connman_service_get_ip4config(service);
+       if (!ipconfig_ipv4)
+               return;
+
+       __connman_ipconfig_append_ipv4(ipconfig_ipv4, iter);
+}
+
+static void append_ipconfig_ipv6(DBusMessageIter *iter, void *user_data)
+{
+       struct connman_service *service = user_data;
+       struct connman_ipconfig *ipconfig_ipv4, *ipconfig_ipv6;
+
+       if (!service)
+               return;
+
+       if (!__connman_service_is_connected_state(service,
+                                               CONNMAN_IPCONFIG_TYPE_IPV6))
+               return;
+
+       ipconfig_ipv4 = __connman_service_get_ip4config(service);
+       ipconfig_ipv6 = __connman_service_get_ip6config(service);
+       if (!ipconfig_ipv6)
+               return;
+
+       __connman_ipconfig_append_ipv6(ipconfig_ipv6, iter, ipconfig_ipv4);
+}
+
+static void append_notify(DBusMessageIter *dict,
+                                       struct connman_session *session)
+{
+       struct session_info *info = session->info;
+       struct session_info *info_last = session->info_last;
+       struct connman_service *service;
+       enum connman_service_type type;
+       const char *name, *bearer;
+       char *ifname;
+       int idx;
+
+       if (session->append_all || info->state != info_last->state) {
+               const char *state = state2string(info->state);
+
+               connman_dbus_dict_append_basic(dict, "State",
+                                               DBUS_TYPE_STRING,
+                                               &state);
+               info_last->state = info->state;
+       }
+
+       if (session->append_all || session->service != session->service_last) {
+               if (session->service) {
+                       service = session->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 = "";
+               }
+
+               connman_dbus_dict_append_basic(dict, "Name",
+                                               DBUS_TYPE_STRING,
+                                               &name);
+
+               connman_dbus_dict_append_dict(dict, "IPv4",
+                                               append_ipconfig_ipv4,
+                                               service);
+
+               connman_dbus_dict_append_dict(dict, "IPv6",
+                                               append_ipconfig_ipv6,
+                                               service);
+
+               connman_dbus_dict_append_basic(dict, "Interface",
+                                               DBUS_TYPE_STRING,
+                                               &ifname);
+
+               connman_dbus_dict_append_basic(dict, "Bearer",
+                                               DBUS_TYPE_STRING,
+                                               &bearer);
+
+               g_free(ifname);
+
+               session->service_last = session->service;
+       }
+
+       if (session->append_all ||
+                       info->config.type != info_last->config.type) {
+               const char *type = type2string(info->config.type);
+
+               connman_dbus_dict_append_basic(dict, "ConnectionType",
+                                               DBUS_TYPE_STRING,
+                                               &type);
+               info_last->config.type = info->config.type;
+       }
+
+       if (session->append_all ||
+                       info->config.allowed_bearers != 
info_last->config.allowed_bearers) {
+               connman_dbus_dict_append_array(dict, "AllowedBearers",
+                                               DBUS_TYPE_STRING,
+                                               append_allowed_bearers,
+                                               info);
+               info_last->config.allowed_bearers = 
info->config.allowed_bearers;
+       }
+
+       session->append_all = false;
+}
+
+static bool compute_notifiable_changes(struct connman_session *session)
+{
+       struct session_info *info_last = session->info_last;
+       struct session_info *info = session->info;
+
+       if (session->append_all)
+               return true;
+
+       if (info->state != info_last->state)
+               return true;
+
+       if (session->service != session->service_last &&
+                       info->state >= CONNMAN_SESSION_STATE_CONNECTED)
+               return true;
+
+       if (info->config.allowed_bearers != info_last->config.allowed_bearers ||
+                       info->config.type != info_last->config.type)
+               return true;
+
+       return false;
+}
+
+static gboolean session_notify(gpointer user_data)
+{
+       struct connman_session *session = user_data;
+       DBusMessage *msg;
+       DBusMessageIter array, dict;
+
+       if (!compute_notifiable_changes(session))
+               return FALSE;
+
+       DBG("session %p owner %s notify_path %s", session,
+               session->owner, session->notify_path);
+
+       msg = dbus_message_new_method_call(session->owner, session->notify_path,
+                                               CONNMAN_NOTIFICATION_INTERFACE,
+                                               "Update");
+       if (!msg)
+               return FALSE;
+
+       dbus_message_iter_init_append(msg, &array);
+       connman_dbus_dict_open(&array, &dict);
+
+       append_notify(&dict, session);
+
+       connman_dbus_dict_close(&array, &dict);
+
+       g_dbus_send_message(connection, msg);
+
+       return FALSE;
+}
+
 static void cleanup_session_final(struct connman_session *session)
 {
        struct session_info *info = session->info;
@@ -723,201 +918,6 @@ const char *connman_session_get_owner(struct 
connman_session *session)
        return session->owner;
 }
 
-static void append_allowed_bearers(DBusMessageIter *iter, void *user_data)
-{
-       struct session_info *info = user_data;
-       GSList *list;
-
-       for (list = info->config.allowed_bearers;
-                       list; list = list->next) {
-               enum connman_service_type bearer = GPOINTER_TO_INT(list->data);
-               const char *name = __connman_service_type2string(bearer);
-
-               if (!name)
-                       name = "*";
-
-               dbus_message_iter_append_basic(iter, DBUS_TYPE_STRING,
-                                               &name);
-       }
-}
-
-static void append_ipconfig_ipv4(DBusMessageIter *iter, void *user_data)
-{
-       struct connman_service *service = user_data;
-       struct connman_ipconfig *ipconfig_ipv4;
-
-       if (!service)
-               return;
-
-       if (!__connman_service_is_connected_state(service,
-                                               CONNMAN_IPCONFIG_TYPE_IPV4))
-               return;
-
-       ipconfig_ipv4 = __connman_service_get_ip4config(service);
-       if (!ipconfig_ipv4)
-               return;
-
-       __connman_ipconfig_append_ipv4(ipconfig_ipv4, iter);
-}
-
-static void append_ipconfig_ipv6(DBusMessageIter *iter, void *user_data)
-{
-       struct connman_service *service = user_data;
-       struct connman_ipconfig *ipconfig_ipv4, *ipconfig_ipv6;
-
-       if (!service)
-               return;
-
-       if (!__connman_service_is_connected_state(service,
-                                               CONNMAN_IPCONFIG_TYPE_IPV6))
-               return;
-
-       ipconfig_ipv4 = __connman_service_get_ip4config(service);
-       ipconfig_ipv6 = __connman_service_get_ip6config(service);
-       if (!ipconfig_ipv6)
-               return;
-
-       __connman_ipconfig_append_ipv6(ipconfig_ipv6, iter, ipconfig_ipv4);
-}
-
-static void append_notify(DBusMessageIter *dict,
-                                       struct connman_session *session)
-{
-       struct session_info *info = session->info;
-       struct session_info *info_last = session->info_last;
-       struct connman_service *service;
-       enum connman_service_type type;
-       const char *name, *bearer;
-       char *ifname;
-       int idx;
-
-       if (session->append_all || info->state != info_last->state) {
-               const char *state = state2string(info->state);
-
-               connman_dbus_dict_append_basic(dict, "State",
-                                               DBUS_TYPE_STRING,
-                                               &state);
-               info_last->state = info->state;
-       }
-
-       if (session->append_all || session->service != session->service_last) {
-               if (session->service) {
-                       service = session->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 = "";
-               }
-
-               connman_dbus_dict_append_basic(dict, "Name",
-                                               DBUS_TYPE_STRING,
-                                               &name);
-
-               connman_dbus_dict_append_dict(dict, "IPv4",
-                                               append_ipconfig_ipv4,
-                                               service);
-
-               connman_dbus_dict_append_dict(dict, "IPv6",
-                                               append_ipconfig_ipv6,
-                                               service);
-
-               connman_dbus_dict_append_basic(dict, "Interface",
-                                               DBUS_TYPE_STRING,
-                                               &ifname);
-
-               connman_dbus_dict_append_basic(dict, "Bearer",
-                                               DBUS_TYPE_STRING,
-                                               &bearer);
-
-               g_free(ifname);
-
-               session->service_last = session->service;
-       }
-
-       if (session->append_all ||
-                       info->config.type != info_last->config.type) {
-               const char *type = type2string(info->config.type);
-
-               connman_dbus_dict_append_basic(dict, "ConnectionType",
-                                               DBUS_TYPE_STRING,
-                                               &type);
-               info_last->config.type = info->config.type;
-       }
-
-       if (session->append_all ||
-                       info->config.allowed_bearers != 
info_last->config.allowed_bearers) {
-               connman_dbus_dict_append_array(dict, "AllowedBearers",
-                                               DBUS_TYPE_STRING,
-                                               append_allowed_bearers,
-                                               info);
-               info_last->config.allowed_bearers = 
info->config.allowed_bearers;
-       }
-
-       session->append_all = false;
-}
-
-static bool compute_notifiable_changes(struct connman_session *session)
-{
-       struct session_info *info_last = session->info_last;
-       struct session_info *info = session->info;
-
-       if (session->append_all)
-               return true;
-
-       if (info->state != info_last->state)
-               return true;
-
-       if (session->service != session->service_last &&
-                       info->state >= CONNMAN_SESSION_STATE_CONNECTED)
-               return true;
-
-       if (info->config.allowed_bearers != info_last->config.allowed_bearers ||
-                       info->config.type != info_last->config.type)
-               return true;
-
-       return false;
-}
-
-static gboolean session_notify(gpointer user_data)
-{
-       struct connman_session *session = user_data;
-       DBusMessage *msg;
-       DBusMessageIter array, dict;
-
-       if (!compute_notifiable_changes(session))
-               return FALSE;
-
-       DBG("session %p owner %s notify_path %s", session,
-               session->owner, session->notify_path);
-
-       msg = dbus_message_new_method_call(session->owner, session->notify_path,
-                                               CONNMAN_NOTIFICATION_INTERFACE,
-                                               "Update");
-       if (!msg)
-               return FALSE;
-
-       dbus_message_iter_init_append(msg, &array);
-       connman_dbus_dict_open(&array, &dict);
-
-       append_notify(&dict, session);
-
-       connman_dbus_dict_close(&array, &dict);
-
-       g_dbus_send_message(connection, msg);
-
-       return FALSE;
-}
-
 static void ipconfig_ipv4_changed(struct connman_session *session)
 {
        connman_dbus_setting_changed_dict(session->owner, session->notify_path,
-- 
1.8.4.474.g128a96c

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

Reply via email to