Commit 59b2db32 authored by CeRiAl's avatar CeRiAl

Service: Ensure cleanup of our configfiles in case of an error

parent 65fd7928
...@@ -132,8 +132,14 @@ enum { ...@@ -132,8 +132,14 @@ enum {
}; };
static guint signals[LAST_SIGNAL] = { 0 }; static guint signals[LAST_SIGNAL] = { 0 };
static void
nm_l2tp_cleanup (void);
static gboolean static gboolean
nm_l2tp_ipsec_error(GError **error, const char *msg) { nm_l2tp_ipsec_error(GError **error, const char *msg) {
/* First, clean up config files */
nm_l2tp_cleanup ();
g_set_error_literal (error, g_set_error_literal (error,
NM_VPN_PLUGIN_ERROR, NM_VPN_PLUGIN_ERROR,
NM_VPN_PLUGIN_ERROR_LAUNCH_FAILED, NM_VPN_PLUGIN_ERROR_LAUNCH_FAILED,
...@@ -604,14 +610,35 @@ nm_l2tp_secrets_validate (NMSettingVPN *s_vpn, GError **error) ...@@ -604,14 +610,35 @@ nm_l2tp_secrets_validate (NMSettingVPN *s_vpn, GError **error)
static void static void
nm_l2tp_stop_ipsec(void); nm_l2tp_stop_ipsec(void);
static void
nm_l2tp_cleanup (void)
{
pid_t my_pid = getpid ();
char *filename;
filename = g_strdup_printf ("/var/run/nm-xl2tpd.conf.%d", my_pid);
unlink(filename);
g_free(filename);
filename = g_strdup_printf ("/var/run/nm-ppp-options.xl2tpd.%d", my_pid);
unlink(filename);
g_free(filename);
filename = g_strdup_printf ("/var/run/nm-ipsec-l2tp.%d/ipsec.conf", my_pid);
unlink(filename);
g_free(filename);
filename = g_strdup_printf ("/var/run/nm-ipsec-l2tp.%d", my_pid);
rmdir(filename);
g_free(filename);
}
static void static void
l2tpd_watch_cb (GPid pid, gint status, gpointer user_data) l2tpd_watch_cb (GPid pid, gint status, gpointer user_data)
{ {
NML2tpPlugin *plugin = NM_L2TP_PLUGIN (user_data); NML2tpPlugin *plugin = NM_L2TP_PLUGIN (user_data);
NML2tpPluginPrivate *priv = NM_L2TP_PLUGIN_GET_PRIVATE (plugin); NML2tpPluginPrivate *priv = NM_L2TP_PLUGIN_GET_PRIVATE (plugin);
guint error = 0; guint error = 0;
pid_t my_pid = getpid ();
char *filename;
if (WIFEXITED (status)) { if (WIFEXITED (status)) {
error = WEXITSTATUS (status); error = WEXITSTATUS (status);
...@@ -634,22 +661,8 @@ l2tpd_watch_cb (GPid pid, gint status, gpointer user_data) ...@@ -634,22 +661,8 @@ l2tpd_watch_cb (GPid pid, gint status, gpointer user_data)
priv->ipsec_up = FALSE; priv->ipsec_up = FALSE;
} }
/* Cleaning up config files */ /* Clean up config files */
filename = g_strdup_printf ("/var/run/nm-xl2tpd.conf.%d", my_pid); nm_l2tp_cleanup ();
unlink(filename);
g_free(filename);
filename = g_strdup_printf ("/var/run/nm-ppp-options.xl2tpd.%d", my_pid);
unlink(filename);
g_free(filename);
filename = g_strdup_printf ("/var/run/nm-ipsec-l2tp.%d/ipsec.conf", my_pid);
unlink(filename);
g_free(filename);
filename = g_strdup_printf ("/var/run/nm-ipsec-l2tp.%d", my_pid);
rmdir(filename);
g_free(filename);
/* Must be after data->state is set since signals use data->state */ /* Must be after data->state is set since signals use data->state */
switch (error) { switch (error) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment