From f842831059601a21f6d63c763c9384a2d6befc18 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Fri, 24 Nov 2017 16:24:40 +0100 Subject: [PATCH 1/6] core: refactor NMSecretAgentCallId typedef not to be a pointer to struct Typedefs to structs are fine, but a typedef for a pointer seems confusing to me. Let's avoid it. (cherry picked from commit 6cb40da2f02f8ae5789f061fa2cea1bb0b6472cf) --- src/settings/nm-agent-manager.c | 8 ++++---- src/settings/nm-secret-agent.c | 8 ++++---- src/settings/nm-secret-agent.h | 29 ++++++++++++++--------------- 3 files changed, 22 insertions(+), 23 deletions(-) diff --git a/src/settings/nm-agent-manager.c b/src/settings/nm-agent-manager.c index bcd178435f..0a52a94938 100644 --- a/src/settings/nm-agent-manager.c +++ b/src/settings/nm-agent-manager.c @@ -170,7 +170,7 @@ struct _NMAgentManagerCallId { /* Current agent being asked for secrets */ NMSecretAgent *current; - NMSecretAgentCallId current_call_id; + NMSecretAgentCallId *current_call_id; /* Stores the sorted list of NMSecretAgents which will be asked for secrets */ GSList *pending; @@ -832,7 +832,7 @@ out: static void _con_get_request_done (NMSecretAgent *agent, - NMSecretAgentCallId call_id, + NMSecretAgentCallId *call_id, GVariant *secrets, GError *error, gpointer user_data) @@ -1276,7 +1276,7 @@ nm_agent_manager_cancel_secrets (NMAgentManager *self, static void _con_save_request_done (NMSecretAgent *agent, - NMSecretAgentCallId call_id, + NMSecretAgentCallId *call_id, GVariant *secrets, GError *error, gpointer user_data) @@ -1362,7 +1362,7 @@ nm_agent_manager_save_secrets (NMAgentManager *self, static void _con_del_request_done (NMSecretAgent *agent, - NMSecretAgentCallId call_id, + NMSecretAgentCallId *call_id, GVariant *secrets, GError *error, gpointer user_data) diff --git a/src/settings/nm-secret-agent.c b/src/settings/nm-secret-agent.c index 593216a9f1..fbff1ee272 100644 --- a/src/settings/nm-secret-agent.c +++ b/src/settings/nm-secret-agent.c @@ -352,7 +352,7 @@ get_callback (GObject *proxy, request_free (r); } -NMSecretAgentCallId +NMSecretAgentCallId * nm_secret_agent_get_secrets (NMSecretAgent *self, const char *path, NMConnection *connection, @@ -474,7 +474,7 @@ do_cancel_secrets (NMSecretAgent *self, Request *r, gboolean disposing) * callback before nm_secret_agent_cancel_secrets() returns. */ void -nm_secret_agent_cancel_secrets (NMSecretAgent *self, NMSecretAgentCallId call_id) +nm_secret_agent_cancel_secrets (NMSecretAgent *self, NMSecretAgentCallId *call_id) { Request *r = call_id; @@ -511,7 +511,7 @@ agent_save_cb (GObject *proxy, request_free (r); } -NMSecretAgentCallId +NMSecretAgentCallId * nm_secret_agent_save_secrets (NMSecretAgent *self, const char *path, NMConnection *connection, @@ -563,7 +563,7 @@ agent_delete_cb (GObject *proxy, request_free (r); } -NMSecretAgentCallId +NMSecretAgentCallId * nm_secret_agent_delete_secrets (NMSecretAgent *self, const char *path, NMConnection *connection, diff --git a/src/settings/nm-secret-agent.h b/src/settings/nm-secret-agent.h index 54c5b39827..64b103aa78 100644 --- a/src/settings/nm-secret-agent.h +++ b/src/settings/nm-secret-agent.h @@ -33,8 +33,7 @@ #define NM_SECRET_AGENT_DISCONNECTED "disconnected" typedef struct _NMSecretAgentClass NMSecretAgentClass; - -typedef struct _NMSecretAgentCallId *NMSecretAgentCallId; +typedef struct _NMSecretAgentCallId NMSecretAgentCallId; GType nm_secret_agent_get_type (void); @@ -67,12 +66,12 @@ gboolean nm_secret_agent_has_permission (NMSecretAgent *agent, const char *permission); typedef void (*NMSecretAgentCallback) (NMSecretAgent *agent, - NMSecretAgentCallId call_id, + NMSecretAgentCallId *call_id, GVariant *new_secrets, /* NULL for save & delete */ GError *error, gpointer user_data); -NMSecretAgentCallId nm_secret_agent_get_secrets (NMSecretAgent *agent, +NMSecretAgentCallId *nm_secret_agent_get_secrets (NMSecretAgent *agent, const char *path, NMConnection *connection, const char *setting_name, @@ -82,18 +81,18 @@ NMSecretAgentCallId nm_secret_agent_get_secrets (NMSecretAgent *agent, gpointer callback_data); void nm_secret_agent_cancel_secrets (NMSecretAgent *agent, - NMSecretAgentCallId call_id); + NMSecretAgentCallId *call_id); -NMSecretAgentCallId nm_secret_agent_save_secrets (NMSecretAgent *agent, - const char *path, - NMConnection *connection, - NMSecretAgentCallback callback, - gpointer callback_data); +NMSecretAgentCallId *nm_secret_agent_save_secrets (NMSecretAgent *agent, + const char *path, + NMConnection *connection, + NMSecretAgentCallback callback, + gpointer callback_data); -NMSecretAgentCallId nm_secret_agent_delete_secrets (NMSecretAgent *agent, - const char *path, - NMConnection *connection, - NMSecretAgentCallback callback, - gpointer callback_data); +NMSecretAgentCallId *nm_secret_agent_delete_secrets (NMSecretAgent *agent, + const char *path, + NMConnection *connection, + NMSecretAgentCallback callback, + gpointer callback_data); #endif /* __NETWORKMANAGER_SECRET_AGENT_H__ */ From 26905105bf0b10d2da1d32b82bbe8731caa441ff Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Fri, 24 Nov 2017 16:24:40 +0100 Subject: [PATCH 2/6] core: refactor NMActRequestGetSecretsCallId typedef not to be a pointer to struct Typedefs to structs are fine, but a typedef for a pointer seems confusing to me. Let's avoid it. (cherry picked from commit e5e291b65fbaea7ea3c35b0e657eefc1825b45db) --- src/devices/nm-device-ethernet.c | 4 ++-- src/devices/nm-device-macsec.c | 4 ++-- src/devices/wifi/nm-device-wifi.c | 4 ++-- src/devices/wwan/nm-modem.c | 4 ++-- src/nm-act-request.c | 4 ++-- src/nm-act-request.h | 20 ++++++++++---------- src/ppp/nm-ppp-manager.c | 4 ++-- 7 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/devices/nm-device-ethernet.c b/src/devices/nm-device-ethernet.c index 7807100f5b..3ca86e06a6 100644 --- a/src/devices/nm-device-ethernet.c +++ b/src/devices/nm-device-ethernet.c @@ -104,7 +104,7 @@ typedef struct _NMDeviceEthernetPrivate { char * s390_nettype; GHashTable * s390_options; - NMActRequestGetSecretsCallId wired_secrets_id; + NMActRequestGetSecretsCallId *wired_secrets_id; /* PPPoE */ NMPPPManager *ppp_manager; @@ -416,7 +416,7 @@ supplicant_interface_release (NMDeviceEthernet *self) static void wired_secrets_cb (NMActRequest *req, - NMActRequestGetSecretsCallId call_id, + NMActRequestGetSecretsCallId *call_id, NMSettingsConnection *connection, GError *error, gpointer user_data) diff --git a/src/devices/nm-device-macsec.c b/src/devices/nm-device-macsec.c index 9558727860..5ef8f93836 100644 --- a/src/devices/nm-device-macsec.c +++ b/src/devices/nm-device-macsec.c @@ -71,7 +71,7 @@ typedef struct { gulong parent_state_id; Supplicant supplicant; guint supplicant_timeout_id; - NMActRequestGetSecretsCallId macsec_secrets_id; + NMActRequestGetSecretsCallId *macsec_secrets_id; } NMDeviceMacsecPrivate; struct _NMDeviceMacsec { @@ -276,7 +276,7 @@ supplicant_iface_assoc_cb (NMSupplicantInterface *iface, static void macsec_secrets_cb (NMActRequest *req, - NMActRequestGetSecretsCallId call_id, + NMActRequestGetSecretsCallId *call_id, NMSettingsConnection *connection, GError *error, gpointer user_data) diff --git a/src/devices/wifi/nm-device-wifi.c b/src/devices/wifi/nm-device-wifi.c index 5e92f47b76..b13ae2c77e 100644 --- a/src/devices/wifi/nm-device-wifi.c +++ b/src/devices/wifi/nm-device-wifi.c @@ -107,7 +107,7 @@ typedef struct { NM80211Mode mode; - NMActRequestGetSecretsCallId wifi_secrets_id; + NMActRequestGetSecretsCallId *wifi_secrets_id; guint periodic_source_id; guint link_timeout_id; @@ -1786,7 +1786,7 @@ cleanup_supplicant_failures (NMDeviceWifi *self) static void wifi_secrets_cb (NMActRequest *req, - NMActRequestGetSecretsCallId call_id, + NMActRequestGetSecretsCallId *call_id, NMSettingsConnection *connection, GError *error, gpointer user_data) diff --git a/src/devices/wwan/nm-modem.c b/src/devices/wwan/nm-modem.c index 77495b62d8..1c32791f11 100644 --- a/src/devices/wwan/nm-modem.c +++ b/src/devices/wwan/nm-modem.c @@ -94,7 +94,7 @@ typedef struct _NMModemPrivate { NMActRequest *act_request; guint32 secrets_tries; - NMActRequestGetSecretsCallId secrets_id; + NMActRequestGetSecretsCallId *secrets_id; guint32 mm_ip_timeout; @@ -880,7 +880,7 @@ cancel_get_secrets (NMModem *self) static void modem_secrets_cb (NMActRequest *req, - NMActRequestGetSecretsCallId call_id, + NMActRequestGetSecretsCallId *call_id, NMSettingsConnection *connection, GError *error, gpointer user_data) diff --git a/src/nm-act-request.c b/src/nm-act-request.c index 6d8bb0652e..da27789a04 100644 --- a/src/nm-act-request.c +++ b/src/nm-act-request.c @@ -171,7 +171,7 @@ get_secrets_cb (NMSettingsConnection *connection, * * Returns: a call-id. */ -NMActRequestGetSecretsCallId +NMActRequestGetSecretsCallId * nm_act_request_get_secrets (NMActRequest *self, gboolean ref_self, const char *setting_name, @@ -247,7 +247,7 @@ _do_cancel_secrets (NMActRequest *self, GetSecretsInfo *info, gboolean is_dispos * synchronously. */ void -nm_act_request_cancel_secrets (NMActRequest *self, NMActRequestGetSecretsCallId call_id) +nm_act_request_cancel_secrets (NMActRequest *self, NMActRequestGetSecretsCallId *call_id) { NMActRequestPrivate *priv; diff --git a/src/nm-act-request.h b/src/nm-act-request.h index b854940442..5d1c9dfd3b 100644 --- a/src/nm-act-request.h +++ b/src/nm-act-request.h @@ -32,7 +32,7 @@ #define NM_ACT_REQUEST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_ACT_REQUEST, NMActRequestClass)) struct _NMActRequestGetSecretsCallId; -typedef struct _NMActRequestGetSecretsCallId *NMActRequestGetSecretsCallId; +typedef struct _NMActRequestGetSecretsCallId NMActRequestGetSecretsCallId; GType nm_act_request_get_type (void); @@ -58,20 +58,20 @@ void nm_act_request_add_share_rule (NMActRequest *req, /* Secrets handling */ typedef void (*NMActRequestSecretsFunc) (NMActRequest *req, - NMActRequestGetSecretsCallId call_id, + NMActRequestGetSecretsCallId *call_id, NMSettingsConnection *connection, GError *error, gpointer user_data); -NMActRequestGetSecretsCallId nm_act_request_get_secrets (NMActRequest *req, - gboolean take_ref, - const char *setting_name, - NMSecretAgentGetSecretsFlags flags, - const char *hint, - NMActRequestSecretsFunc callback, - gpointer callback_data); +NMActRequestGetSecretsCallId *nm_act_request_get_secrets (NMActRequest *req, + gboolean take_ref, + const char *setting_name, + NMSecretAgentGetSecretsFlags flags, + const char *hint, + NMActRequestSecretsFunc callback, + gpointer callback_data); -void nm_act_request_cancel_secrets (NMActRequest *req, NMActRequestGetSecretsCallId call_id); +void nm_act_request_cancel_secrets (NMActRequest *req, NMActRequestGetSecretsCallId *call_id); void nm_act_request_clear_secrets (NMActRequest *self); #endif /* __NM_ACT_REQUEST_H__ */ diff --git a/src/ppp/nm-ppp-manager.c b/src/ppp/nm-ppp-manager.c index 3ef3f3dc84..7dd6a9b95c 100644 --- a/src/ppp/nm-ppp-manager.c +++ b/src/ppp/nm-ppp-manager.c @@ -96,7 +96,7 @@ typedef struct { NMActRequest *act_req; GDBusMethodInvocation *pending_secrets_context; - NMActRequestGetSecretsCallId secrets_id; + NMActRequestGetSecretsCallId *secrets_id; const char *secrets_setting_name; guint ppp_watch_id; @@ -287,7 +287,7 @@ extract_details_from_connection (NMConnection *connection, static void ppp_secrets_cb (NMActRequest *req, - NMActRequestGetSecretsCallId call_id, + NMActRequestGetSecretsCallId *call_id, NMSettingsConnection *settings_connection, /* unused (we pass NULL here) */ GError *error, gpointer user_data) From b652f492a1760f973b1012586c89335599211583 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Fri, 24 Nov 2017 16:24:40 +0100 Subject: [PATCH 3/6] core: drop internal typedef GetSecretsInfo for NMSecretAgentCallId Using an internal alias for the type is just confusing. Drop it. (cherry picked from commit 370dc8883fee6eee9ff79e404fbab63737f29cde) --- src/nm-act-request.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/nm-act-request.c b/src/nm-act-request.c index da27789a04..28556dac95 100644 --- a/src/nm-act-request.c +++ b/src/nm-act-request.c @@ -97,14 +97,12 @@ struct _NMActRequestGetSecretsCallId { bool has_ref; }; -typedef struct _NMActRequestGetSecretsCallId GetSecretsInfo; - -static GetSecretsInfo * +static NMActRequestGetSecretsCallId * _get_secrets_info_new (NMActRequest *self, gboolean ref_self, NMActRequestSecretsFunc callback, gpointer callback_data) { - GetSecretsInfo *info; + NMActRequestGetSecretsCallId *info; - info = g_slice_new0 (GetSecretsInfo); + info = g_slice_new0 (NMActRequestGetSecretsCallId); info->has_ref = ref_self; info->self = ref_self ? g_object_ref (self) : self; info->callback = callback; @@ -114,11 +112,11 @@ _get_secrets_info_new (NMActRequest *self, gboolean ref_self, NMActRequestSecret } static void -_get_secrets_info_free (GetSecretsInfo *info) +_get_secrets_info_free (NMActRequestGetSecretsCallId *info) { if (info->has_ref) g_object_unref (info->self); - g_slice_free (GetSecretsInfo, info); + g_slice_free (NMActRequestGetSecretsCallId, info); } static void @@ -129,7 +127,7 @@ get_secrets_cb (NMSettingsConnection *connection, GError *error, gpointer user_data) { - GetSecretsInfo *info = user_data; + NMActRequestGetSecretsCallId *info = user_data; NMActRequestPrivate *priv; g_return_if_fail (info && info->call_id == call_id_s); @@ -181,7 +179,7 @@ nm_act_request_get_secrets (NMActRequest *self, gpointer callback_data) { NMActRequestPrivate *priv; - GetSecretsInfo *info; + NMActRequestGetSecretsCallId *info; NMSettingsConnectionCallId call_id_s; NMSettingsConnection *settings_connection; NMConnection *applied_connection; @@ -215,7 +213,7 @@ nm_act_request_get_secrets (NMActRequest *self, } static void -_do_cancel_secrets (NMActRequest *self, GetSecretsInfo *info, gboolean is_disposing) +_do_cancel_secrets (NMActRequest *self, NMActRequestGetSecretsCallId *info, gboolean is_disposing) { NMActRequestPrivate *priv = NM_ACT_REQUEST_GET_PRIVATE (self); From 4a7fa0c4c4065a2a48057a71002d6e3f6f32695d Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Fri, 24 Nov 2017 16:24:40 +0100 Subject: [PATCH 4/6] core: drop internal typedef Result for NMSecretAgentCallId Using an internal alias for the type is just confusing. Drop it. (cherry picked from commit 966ac036683cb0a46e8c1dc5bb67d3cec26fd928) --- src/settings/nm-secret-agent.c | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/src/settings/nm-secret-agent.c b/src/settings/nm-secret-agent.c index fbff1ee272..99b955ed4a 100644 --- a/src/settings/nm-secret-agent.c +++ b/src/settings/nm-secret-agent.c @@ -118,9 +118,7 @@ struct _NMSecretAgentCallId { gpointer callback_data; }; -typedef struct _NMSecretAgentCallId Request; - -static Request * +static NMSecretAgentCallId * request_new (NMSecretAgent *self, const char *dbus_command, /* this must be a static string. */ const char *path, @@ -128,9 +126,9 @@ request_new (NMSecretAgent *self, NMSecretAgentCallback callback, gpointer callback_data) { - Request *r; + NMSecretAgentCallId *r; - r = g_slice_new0 (Request); + r = g_slice_new0 (NMSecretAgentCallId); r->agent = self; r->path = g_strdup (path); r->setting_name = g_strdup (setting_name); @@ -146,7 +144,7 @@ request_new (NMSecretAgent *self, #define request_new(self,dbus_command,path,setting_name,callback,callback_data) request_new(self,""dbus_command"",path,setting_name,callback,callback_data) static void -request_free (Request *r) +request_free (NMSecretAgentCallId *r) { NMSecretAgent *self = r->agent; @@ -156,11 +154,11 @@ request_free (Request *r) g_free (r->setting_name); if (r->cancellable) g_object_unref (r->cancellable); - g_slice_free (Request, r); + g_slice_free (NMSecretAgentCallId, r); } static gboolean -request_check_return (Request *r) +request_check_return (NMSecretAgentCallId *r) { if (!r->cancellable) return FALSE; @@ -336,7 +334,7 @@ get_callback (GObject *proxy, GAsyncResult *result, gpointer user_data) { - Request *r = user_data; + NMSecretAgentCallId *r = user_data; if (request_check_return (r)) { NMSecretAgentPrivate *priv = NM_SECRET_AGENT_GET_PRIVATE (r->agent); @@ -365,7 +363,7 @@ nm_secret_agent_get_secrets (NMSecretAgent *self, NMSecretAgentPrivate *priv; static const char *no_hints[] = { NULL }; GVariant *dict; - Request *r; + NMSecretAgentCallId *r; g_return_val_if_fail (NM_IS_SECRET_AGENT (self), NULL); g_return_val_if_fail (NM_IS_CONNECTION (connection), NULL); @@ -418,7 +416,7 @@ cancel_done (GObject *proxy, GAsyncResult *result, gpointer user_data) } static void -do_cancel_secrets (NMSecretAgent *self, Request *r, gboolean disposing) +do_cancel_secrets (NMSecretAgent *self, NMSecretAgentCallId *r, gboolean disposing) { NMSecretAgentPrivate *priv = NM_SECRET_AGENT_GET_PRIVATE (self); GCancellable *cancellable; @@ -476,7 +474,7 @@ do_cancel_secrets (NMSecretAgent *self, Request *r, gboolean disposing) void nm_secret_agent_cancel_secrets (NMSecretAgent *self, NMSecretAgentCallId *call_id) { - Request *r = call_id; + NMSecretAgentCallId *r = call_id; g_return_if_fail (NM_IS_SECRET_AGENT (self)); g_return_if_fail (r); @@ -496,7 +494,7 @@ agent_save_cb (GObject *proxy, GAsyncResult *result, gpointer user_data) { - Request *r = user_data; + NMSecretAgentCallId *r = user_data; if (request_check_return (r)) { NMSecretAgentPrivate *priv = NM_SECRET_AGENT_GET_PRIVATE (r->agent); @@ -520,7 +518,7 @@ nm_secret_agent_save_secrets (NMSecretAgent *self, { NMSecretAgentPrivate *priv; GVariant *dict; - Request *r; + NMSecretAgentCallId *r; g_return_val_if_fail (NM_IS_SECRET_AGENT (self), NULL); g_return_val_if_fail (NM_IS_CONNECTION (connection), NULL); @@ -548,7 +546,7 @@ agent_delete_cb (GObject *proxy, GAsyncResult *result, gpointer user_data) { - Request *r = user_data; + NMSecretAgentCallId *r = user_data; if (request_check_return (r)) { NMSecretAgentPrivate *priv = NM_SECRET_AGENT_GET_PRIVATE (r->agent); @@ -572,7 +570,7 @@ nm_secret_agent_delete_secrets (NMSecretAgent *self, { NMSecretAgentPrivate *priv; GVariant *dict; - Request *r; + NMSecretAgentCallId *r; g_return_val_if_fail (NM_IS_SECRET_AGENT (self), NULL); g_return_val_if_fail (NM_IS_CONNECTION (connection), NULL); @@ -769,7 +767,7 @@ dispose (GObject *object) again: c_list_for_each (iter, &priv->requests) { c_list_unlink_init (iter); - do_cancel_secrets (self, c_list_entry (iter, Request, lst), TRUE); + do_cancel_secrets (self, c_list_entry (iter, NMSecretAgentCallId, lst), TRUE); goto again; } From 2776fe6cb4a8b0daccbadbe3e830cf11830cec04 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Fri, 24 Nov 2017 16:34:27 +0100 Subject: [PATCH 5/6] core/trivial: unify names of internal NMActRequestGetSecretsCallId as "call_id" (cherry picked from commit 1cbbefcdddffc4dcf66eb2d7e58cc6c46bc08dca) --- src/nm-act-request.c | 70 ++++++++++++++++++++++---------------------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/src/nm-act-request.c b/src/nm-act-request.c index 28556dac95..781190ac7f 100644 --- a/src/nm-act-request.c +++ b/src/nm-act-request.c @@ -98,25 +98,25 @@ struct _NMActRequestGetSecretsCallId { }; static NMActRequestGetSecretsCallId * -_get_secrets_info_new (NMActRequest *self, gboolean ref_self, NMActRequestSecretsFunc callback, gpointer callback_data) +_get_secrets_call_id_new (NMActRequest *self, gboolean ref_self, NMActRequestSecretsFunc callback, gpointer callback_data) { - NMActRequestGetSecretsCallId *info; + NMActRequestGetSecretsCallId *call_id; - info = g_slice_new0 (NMActRequestGetSecretsCallId); - info->has_ref = ref_self; - info->self = ref_self ? g_object_ref (self) : self; - info->callback = callback; - info->callback_data = callback_data; + call_id = g_slice_new0 (NMActRequestGetSecretsCallId); + call_id->has_ref = ref_self; + call_id->self = ref_self ? g_object_ref (self) : self; + call_id->callback = callback; + call_id->callback_data = callback_data; - return info; + return call_id; } static void -_get_secrets_info_free (NMActRequestGetSecretsCallId *info) +_get_secrets_call_id_free (NMActRequestGetSecretsCallId *call_id) { - if (info->has_ref) - g_object_unref (info->self); - g_slice_free (NMActRequestGetSecretsCallId, info); + if (call_id->has_ref) + g_object_unref (call_id->self); + g_slice_free (NMActRequestGetSecretsCallId, call_id); } static void @@ -127,25 +127,25 @@ get_secrets_cb (NMSettingsConnection *connection, GError *error, gpointer user_data) { - NMActRequestGetSecretsCallId *info = user_data; + NMActRequestGetSecretsCallId *call_id = user_data; NMActRequestPrivate *priv; - g_return_if_fail (info && info->call_id == call_id_s); - g_return_if_fail (NM_IS_ACT_REQUEST (info->self)); + g_return_if_fail (call_id && call_id->call_id == call_id_s); + g_return_if_fail (NM_IS_ACT_REQUEST (call_id->self)); if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) return; - priv = NM_ACT_REQUEST_GET_PRIVATE (info->self); + priv = NM_ACT_REQUEST_GET_PRIVATE (call_id->self); - g_return_if_fail (g_slist_find (priv->secrets_calls, info)); + g_return_if_fail (g_slist_find (priv->secrets_calls, call_id)); - priv->secrets_calls = g_slist_remove (priv->secrets_calls, info); + priv->secrets_calls = g_slist_remove (priv->secrets_calls, call_id); - if (info->callback) - info->callback (info->self, info, connection, error, info->callback_data); + if (call_id->callback) + call_id->callback (call_id->self, call_id, connection, error, call_id->callback_data); - _get_secrets_info_free (info); + _get_secrets_call_id_free (call_id); } /** @@ -179,7 +179,7 @@ nm_act_request_get_secrets (NMActRequest *self, gpointer callback_data) { NMActRequestPrivate *priv; - NMActRequestGetSecretsCallId *info; + NMActRequestGetSecretsCallId *call_id; NMSettingsConnectionCallId call_id_s; NMSettingsConnection *settings_connection; NMConnection *applied_connection; @@ -192,9 +192,9 @@ nm_act_request_get_secrets (NMActRequest *self, settings_connection = nm_act_request_get_settings_connection (self); applied_connection = nm_act_request_get_applied_connection (self); - info = _get_secrets_info_new (self, ref_self, callback, callback_data); + call_id = _get_secrets_call_id_new (self, ref_self, callback, callback_data); - priv->secrets_calls = g_slist_append (priv->secrets_calls, info); + priv->secrets_calls = g_slist_append (priv->secrets_calls, call_id); if (nm_active_connection_get_user_requested (NM_ACTIVE_CONNECTION (self))) flags |= NM_SECRET_AGENT_GET_SECRETS_FLAG_USER_REQUESTED; @@ -206,32 +206,32 @@ nm_act_request_get_secrets (NMActRequest *self, flags, hints, get_secrets_cb, - info); - info->call_id = call_id_s; + call_id); + call_id->call_id = call_id_s; g_return_val_if_fail (call_id_s, NULL); - return info; + return call_id; } static void -_do_cancel_secrets (NMActRequest *self, NMActRequestGetSecretsCallId *info, gboolean is_disposing) +_do_cancel_secrets (NMActRequest *self, NMActRequestGetSecretsCallId *call_id, gboolean is_disposing) { NMActRequestPrivate *priv = NM_ACT_REQUEST_GET_PRIVATE (self); - nm_assert (info && info->self == self); - nm_assert (g_slist_find (priv->secrets_calls, info)); + nm_assert (call_id && call_id->self == self); + nm_assert (g_slist_find (priv->secrets_calls, call_id)); - priv->secrets_calls = g_slist_remove (priv->secrets_calls, info); + priv->secrets_calls = g_slist_remove (priv->secrets_calls, call_id); - nm_settings_connection_cancel_secrets (nm_act_request_get_settings_connection (self), info->call_id); + nm_settings_connection_cancel_secrets (nm_act_request_get_settings_connection (self), call_id->call_id); - if (info->callback) { + if (call_id->callback) { gs_free_error GError *error = NULL; nm_utils_error_set_cancelled (&error, is_disposing, "NMActRequest"); - info->callback (self, info, NULL, error, info->callback_data); + call_id->callback (self, call_id, NULL, error, call_id->callback_data); } - _get_secrets_info_free (info); + _get_secrets_call_id_free (call_id); } /** From d586bc030436451a72c2fe0059c13f4a18e0e07d Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Fri, 24 Nov 2017 16:21:40 +0100 Subject: [PATCH 6/6] core: use CList to track NMActRequestGetSecretsCallId in NMActRequest Gives O(1) insert and remove. Also saves the overhead of the GSlice allocation for the GSList node. (cherry picked from commit a3569eddf2a4606d99f998bac19dae251690b492) --- src/nm-act-request.c | 49 ++++++++++++++++++++++---------------------- 1 file changed, 24 insertions(+), 25 deletions(-) diff --git a/src/nm-act-request.c b/src/nm-act-request.c index 781190ac7f..25a1dd9b4f 100644 --- a/src/nm-act-request.c +++ b/src/nm-act-request.c @@ -28,6 +28,8 @@ #include #include +#include "nm-utils/c-list.h" + #include "nm-setting-wireless-security.h" #include "nm-setting-8021x.h" #include "devices/nm-device.h" @@ -41,7 +43,7 @@ typedef struct { } ShareRule; typedef struct { - GSList *secrets_calls; + CList call_ids_lst_head; gboolean shared; GSList *share_rules; } NMActRequestPrivate; @@ -90,6 +92,7 @@ nm_act_request_get_applied_connection (NMActRequest *req) /*****************************************************************************/ struct _NMActRequestGetSecretsCallId { + CList call_ids_lst; NMActRequest *self; NMActRequestSecretsFunc callback; gpointer callback_data; @@ -97,23 +100,12 @@ struct _NMActRequestGetSecretsCallId { bool has_ref; }; -static NMActRequestGetSecretsCallId * -_get_secrets_call_id_new (NMActRequest *self, gboolean ref_self, NMActRequestSecretsFunc callback, gpointer callback_data) -{ - NMActRequestGetSecretsCallId *call_id; - - call_id = g_slice_new0 (NMActRequestGetSecretsCallId); - call_id->has_ref = ref_self; - call_id->self = ref_self ? g_object_ref (self) : self; - call_id->callback = callback; - call_id->callback_data = callback_data; - - return call_id; -} - static void _get_secrets_call_id_free (NMActRequestGetSecretsCallId *call_id) { + nm_assert (call_id); + nm_assert (!c_list_is_linked (&call_id->call_ids_lst)); + if (call_id->has_ref) g_object_unref (call_id->self); g_slice_free (NMActRequestGetSecretsCallId, call_id); @@ -138,9 +130,9 @@ get_secrets_cb (NMSettingsConnection *connection, priv = NM_ACT_REQUEST_GET_PRIVATE (call_id->self); - g_return_if_fail (g_slist_find (priv->secrets_calls, call_id)); + nm_assert (c_list_contains (&priv->call_ids_lst_head, &call_id->call_ids_lst)); - priv->secrets_calls = g_slist_remove (priv->secrets_calls, call_id); + c_list_unlink_init (&call_id->call_ids_lst); if (call_id->callback) call_id->callback (call_id->self, call_id, connection, error, call_id->callback_data); @@ -192,9 +184,12 @@ nm_act_request_get_secrets (NMActRequest *self, settings_connection = nm_act_request_get_settings_connection (self); applied_connection = nm_act_request_get_applied_connection (self); - call_id = _get_secrets_call_id_new (self, ref_self, callback, callback_data); - - priv->secrets_calls = g_slist_append (priv->secrets_calls, call_id); + call_id = g_slice_new0 (NMActRequestGetSecretsCallId); + call_id->has_ref = ref_self; + call_id->self = ref_self ? g_object_ref (self) : self; + call_id->callback = callback; + call_id->callback_data = callback_data; + c_list_link_tail (&priv->call_ids_lst_head, &call_id->call_ids_lst); if (nm_active_connection_get_user_requested (NM_ACTIVE_CONNECTION (self))) flags |= NM_SECRET_AGENT_GET_SECRETS_FLAG_USER_REQUESTED; @@ -218,9 +213,9 @@ _do_cancel_secrets (NMActRequest *self, NMActRequestGetSecretsCallId *call_id, g NMActRequestPrivate *priv = NM_ACT_REQUEST_GET_PRIVATE (self); nm_assert (call_id && call_id->self == self); - nm_assert (g_slist_find (priv->secrets_calls, call_id)); + nm_assert (c_list_contains (&priv->call_ids_lst_head, &call_id->call_ids_lst)); - priv->secrets_calls = g_slist_remove (priv->secrets_calls, call_id); + c_list_unlink_init (&call_id->call_ids_lst); nm_settings_connection_cancel_secrets (nm_act_request_get_settings_connection (self), call_id->call_id); @@ -262,7 +257,7 @@ nm_act_request_cancel_secrets (NMActRequest *self, NMActRequestGetSecretsCallId priv = NM_ACT_REQUEST_GET_PRIVATE (self); - if (!g_slist_find (priv->secrets_calls, call_id)) + if (!c_list_is_linked (&call_id->call_ids_lst)) g_return_if_reached (); _do_cancel_secrets (self, call_id, FALSE); @@ -535,6 +530,9 @@ get_property (GObject *object, guint prop_id, static void nm_act_request_init (NMActRequest *req) { + NMActRequestPrivate *priv = NM_ACT_REQUEST_GET_PRIVATE (req); + + c_list_init (&priv->call_ids_lst_head); } /** @@ -580,10 +578,11 @@ dispose (GObject *object) { NMActRequest *self = NM_ACT_REQUEST (object); NMActRequestPrivate *priv = NM_ACT_REQUEST_GET_PRIVATE (self); + NMActRequestGetSecretsCallId *call_id, *call_id_safe; /* Kill any in-progress secrets requests */ - while (priv->secrets_calls) - _do_cancel_secrets (self, priv->secrets_calls->data, TRUE); + c_list_for_each_entry_safe (call_id, call_id_safe, &priv->call_ids_lst_head, call_ids_lst) + _do_cancel_secrets (self, call_id, TRUE); /* Clear any share rules */ if (priv->share_rules) {