[network-manager-applet/bg/vpn-request-crash-rh1775278: 1/2] applet: merge VPN request free functions
- From: Beniamino Galvani <bgalvani src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [network-manager-applet/bg/vpn-request-crash-rh1775278: 1/2] applet: merge VPN request free functions
- Date: Tue, 17 Mar 2020 16:28:48 +0000 (UTC)
commit d7e86c6fa022ee517ae6fa03e03b6c3a0c448880
Author: Beniamino Galvani <bgalvani redhat com>
Date: Tue Mar 17 16:46:56 2020 +0100
applet: merge VPN request free functions
src/applet-vpn-request.c | 117 +++++++++++++++++++++++------------------------
1 file changed, 56 insertions(+), 61 deletions(-)
---
diff --git a/src/applet-vpn-request.c b/src/applet-vpn-request.c
index 91368f92..e52243c8 100644
--- a/src/applet-vpn-request.c
+++ b/src/applet-vpn-request.c
@@ -59,7 +59,6 @@ typedef struct {
/*****************************************************************************/
-static void request_data_free (RequestData *req_data);
static void complete_request (VpnSecretsInfo *info);
/*****************************************************************************/
@@ -582,10 +581,65 @@ auth_dialog_spawn (const char *con_id,
/*****************************************************************************/
+static gboolean
+ensure_killed (gpointer data)
+{
+ pid_t pid = GPOINTER_TO_INT (data);
+
+ if (kill (pid, 0) == 0)
+ kill (pid, SIGKILL);
+ /* ensure the child is reaped */
+ waitpid (pid, NULL, 0);
+ return FALSE;
+}
+
static void
free_vpn_secrets_info (SecretsRequest *req)
{
- request_data_free (((VpnSecretsInfo *) req)->req_data);
+ RequestData *req_data;
+ guint i;
+
+ req_data = ((VpnSecretsInfo *) req)->req_data;
+
+ if (!req_data)
+ return;
+
+ g_free (req_data->uuid);
+ g_free (req_data->id);
+ g_free (req_data->service_type);
+
+ nm_clear_g_source (&req_data->watch_id);
+
+ nm_clear_g_source (&req_data->channel_eventid);
+ if (req_data->channel)
+ g_io_channel_unref (req_data->channel);
+
+ if (req_data->pid) {
+ g_spawn_close_pid (req_data->pid);
+ if (kill (req_data->pid, SIGTERM) == 0)
+ g_timeout_add_seconds (2, ensure_killed, GINT_TO_POINTER (req_data->pid));
+ else {
+ kill (req_data->pid, SIGKILL);
+ /* ensure the child is reaped */
+ waitpid (req_data->pid, NULL, 0);
+ }
+ }
+
+ if (req_data->child_response)
+ g_string_free (req_data->child_response, TRUE);
+
+ g_variant_builder_clear (&req_data->secrets_builder);
+
+ if (req_data->eui_secrets) {
+ for (i = 0; req_data->eui_secrets[i].name; i++) {
+ g_free (req_data->eui_secrets[i].name);
+ g_free (req_data->eui_secrets[i].label);
+ g_free (req_data->eui_secrets[i].value);
+ }
+ g_free (req_data->eui_secrets);
+ }
+
+ g_slice_free (RequestData, req_data);
}
gboolean
@@ -676,62 +730,3 @@ applet_vpn_request_get_secrets (SecretsRequest *req, GError **error)
return TRUE;
}
-/*****************************************************************************/
-
-static gboolean
-ensure_killed (gpointer data)
-{
- pid_t pid = GPOINTER_TO_INT (data);
-
- if (kill (pid, 0) == 0)
- kill (pid, SIGKILL);
- /* ensure the child is reaped */
- waitpid (pid, NULL, 0);
- return FALSE;
-}
-
-static void
-request_data_free (RequestData *req_data)
-{
- guint i;
-
- if (!req_data)
- return;
-
- g_free (req_data->uuid);
- g_free (req_data->id);
- g_free (req_data->service_type);
-
- nm_clear_g_source (&req_data->watch_id);
-
- nm_clear_g_source (&req_data->channel_eventid);
- if (req_data->channel)
- g_io_channel_unref (req_data->channel);
-
- if (req_data->pid) {
- g_spawn_close_pid (req_data->pid);
- if (kill (req_data->pid, SIGTERM) == 0)
- g_timeout_add_seconds (2, ensure_killed, GINT_TO_POINTER (req_data->pid));
- else {
- kill (req_data->pid, SIGKILL);
- /* ensure the child is reaped */
- waitpid (req_data->pid, NULL, 0);
- }
- }
-
- if (req_data->child_response)
- g_string_free (req_data->child_response, TRUE);
-
- g_variant_builder_clear (&req_data->secrets_builder);
-
- if (req_data->eui_secrets) {
- for (i = 0; req_data->eui_secrets[i].name; i++) {
- g_free (req_data->eui_secrets[i].name);
- g_free (req_data->eui_secrets[i].label);
- g_free (req_data->eui_secrets[i].value);
- }
- g_free (req_data->eui_secrets);
- }
-
- g_slice_free (RequestData, req_data);
-}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]