summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Wagner <daniel.wagner@bmw-carit.de>2011-05-09 17:50:10 +0200
committerDaniel Wagner <daniel.wagner@bmw-carit.de>2011-05-13 15:55:57 +0200
commit0197d861d2eb6a3ab17ab69e5b7d3bbed3049ff8 (patch)
tree09eed5d5af404f3d5dfd546cf90ff99a7cf79e83
parent441e44001059446748d3596518e5dd13d05bf09b (diff)
downloadconnman-0197d861d2eb6a3ab17ab69e5b7d3bbed3049ff8.tar.gz
connman-0197d861d2eb6a3ab17ab69e5b7d3bbed3049ff8.tar.bz2
connman-0197d861d2eb6a3ab17ab69e5b7d3bbed3049ff8.zip
session: Update bearer in create_service_entry
-rw-r--r--src/session.c34
1 files changed, 13 insertions, 21 deletions
diff --git a/src/session.c b/src/session.c
index 2ccdfe16..bf785301 100644
--- a/src/session.c
+++ b/src/session.c
@@ -66,10 +66,10 @@ struct service_entry {
const char *name;
struct connman_service *service;
const char *ifname;
+ const char *bearer;
};
struct session_info {
- char *bearer;
connman_bool_t online;
connman_bool_t priority;
GSList *allowed_bearers;
@@ -342,15 +342,7 @@ static void append_notify(DBusMessageIter *dict,
struct session_info *info_last = &session->info_last;
const char *policy;
struct connman_service *service;
- const char *name, *ifname;
-
- if (session->append_all == TRUE ||
- info->bearer != info_last->bearer) {
- connman_dbus_dict_append_basic(dict, "Bearer",
- DBUS_TYPE_STRING,
- &info->bearer);
- info_last->bearer = info->bearer;
- }
+ const char *name, *ifname, *bearer;
if (session->append_all == TRUE ||
info->online != info_last->online) {
@@ -366,10 +358,12 @@ static void append_notify(DBusMessageIter *dict,
name = "";
ifname = "";
service = NULL;
+ 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",
@@ -388,6 +382,10 @@ static void append_notify(DBusMessageIter *dict,
DBUS_TYPE_STRING,
&ifname);
+ connman_dbus_dict_append_basic(dict, "Bearer",
+ DBUS_TYPE_STRING,
+ &bearer);
+
info_last->entry = info->entry;
}
@@ -748,17 +746,10 @@ static connman_bool_t is_connected(enum connman_service_state state)
static void update_info(struct session_info *info)
{
- enum connman_service_type type;
-
- if (info->entry != NULL) {
- type = connman_service_get_type(info->entry->service);
- info->bearer = service2bearer(type);
-
+ if (info->entry != NULL)
info->online = is_connected(info->entry->state);
- } else {
- info->bearer = "";
+ else
info->online = FALSE;
- }
}
static connman_bool_t explicit_connect(enum connman_session_reason reason)
@@ -984,6 +975,7 @@ static struct service_entry *create_service_entry(struct connman_service *servic
enum connman_service_state state)
{
struct service_entry *entry;
+ enum connman_service_type type;
int idx;
entry = g_try_new0(struct service_entry, 1);
@@ -1000,6 +992,8 @@ static struct service_entry *create_service_entry(struct connman_service *servic
if (entry->ifname == NULL)
entry->ifname = "";
+ type = connman_service_get_type(entry->service);
+ entry->bearer = service2bearer(type);
return entry;
}
@@ -1351,7 +1345,6 @@ int __connman_session_create(DBusMessage *msg)
session->service_hash = g_hash_table_new_full(g_str_hash, g_str_equal,
NULL, NULL);
- info->bearer = "";
info->online = FALSE;
info->priority = priority;
info->avoid_handover = avoid_handover;
@@ -1403,7 +1396,6 @@ int __connman_session_create(DBusMessage *msg)
update_ecall_sessions(session);
}
- info_last->bearer = info->bearer;
info_last->online = info->online;
info_last->priority = info->priority;
info_last->avoid_handover = info->avoid_handover;