From: Daniel Wagner <[email protected]>
Use the generic callback helpers to encapsulate struct create_data.
In a later patch we will add some more data elemets to struct
create_data. That is the reason why it is not remove here.
---
plugins/session_policy_local.c | 16 +++++++++-------
1 file changed, 9 insertions(+), 7 deletions(-)
diff --git a/plugins/session_policy_local.c b/plugins/session_policy_local.c
index f61e280..cb1f46e 100644
--- a/plugins/session_policy_local.c
+++ b/plugins/session_policy_local.c
@@ -51,8 +51,6 @@ static GHashTable *session_hash;
struct create_data {
struct connman_session *session;
- connman_session_config_cb_t cb;
- void *user_data;
};
struct policy_data {
@@ -164,7 +162,9 @@ static void policy_unref(struct policy_data *policy)
static void selinux_context_reply(const unsigned char *context, void
*user_data,
int err)
{
- struct create_data *data = user_data;
+ struct cb_data *cbd = user_data;
+ connman_session_config_cb_t cb = cbd->cb;
+ struct create_data *data = cbd->data;
struct policy_data *policy;
struct connman_session_config *config = NULL;
char *ident = NULL;
@@ -196,8 +196,9 @@ static void selinux_context_reply(const unsigned char
*context, void *user_data,
config = policy->config;
done:
- (*data->cb)(err, data->session, config, data->user_data);
+ (*cb)(err, data->session, config, cbd->user_data);
+ g_free(cbd);
g_free(data);
g_free(ident);
}
@@ -206,6 +207,7 @@ static int policy_local_create(struct connman_session
*session,
connman_session_config_cb_t cb,
void *user_data)
{
+ struct cb_data *cbd = cb_data_new(cb, user_data);
struct create_data *data;
const char *owner;
int err;
@@ -215,19 +217,19 @@ static int policy_local_create(struct connman_session
*session,
data = g_try_new0(struct create_data, 1);
if (data == NULL)
return -ENOMEM;
+ cbd->data = data;
data->session = session;
- data->cb = cb;
- data->user_data = user_data;
owner = connman_session_get_owner(session);
err = connman_dbus_get_selinux_context(connection, owner,
selinux_context_reply,
- data);
+ cbd);
if (err < 0) {
connman_error("Could not get SELinux context");
g_free(data);
+ g_free(cbd);
return err;
}
--
1.8.2.rc3.16.gce432ca
_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman