sharing: fix sharing after 715ddd2045
(lp:444756)
Commit 715ddd2045
broke sharing because
sometimes a multi-argument string gets passed in rule->rule. Revert
most of that commit. A bunch of cleanups by dcbw too.
This commit is contained in:

committed by
Dan Williams

parent
72a98c5b29
commit
59d89050f2
@@ -575,35 +575,35 @@ nm_act_request_set_shared (NMActRequest *req, gboolean shared)
|
|||||||
for (iter = list; iter; iter = g_slist_next (iter)) {
|
for (iter = list; iter; iter = g_slist_next (iter)) {
|
||||||
ShareRule *rule = (ShareRule *) iter->data;
|
ShareRule *rule = (ShareRule *) iter->data;
|
||||||
char *envp[1] = { NULL };
|
char *envp[1] = { NULL };
|
||||||
char *argv[6];
|
char **argv;
|
||||||
char *cmd;
|
char *cmd;
|
||||||
int status;
|
|
||||||
GError *error = NULL;
|
|
||||||
|
|
||||||
argv[0] = IPTABLES_PATH;
|
cmd = g_strdup_printf ("%s --table %s %s %s",
|
||||||
argv[1] = "--table";
|
IPTABLES_PATH,
|
||||||
argv[2] = rule->table;
|
rule->table,
|
||||||
|
shared ? "--insert" : "--delete",
|
||||||
|
rule->rule);
|
||||||
|
if (!cmd)
|
||||||
|
continue;
|
||||||
|
|
||||||
if (shared)
|
argv = g_strsplit (cmd, " ", 0);
|
||||||
argv[3] = "--insert";
|
if (argv && argv[0]) {
|
||||||
else
|
int status;
|
||||||
argv[3] = "--delete";
|
GError *error = NULL;
|
||||||
|
|
||||||
argv[4] = rule->rule;
|
nm_info ("Executing: %s", cmd);
|
||||||
argv[5] = NULL;
|
if (!g_spawn_sync ("/", argv, envp, G_SPAWN_STDOUT_TO_DEV_NULL | G_SPAWN_STDERR_TO_DEV_NULL,
|
||||||
|
share_child_setup, NULL, NULL, NULL, &status, &error)) {
|
||||||
cmd = g_strjoinv (" ", argv);
|
nm_info ("Error executing command: (%d) %s",
|
||||||
nm_info ("Executing: %s", cmd);
|
error ? error->code : -1,
|
||||||
|
(error && error->message) ? error->message : "(unknown)");
|
||||||
|
g_clear_error (&error);
|
||||||
|
} else if (WEXITSTATUS (status))
|
||||||
|
nm_info ("** Command returned exit status %d.", WEXITSTATUS (status));
|
||||||
|
}
|
||||||
g_free (cmd);
|
g_free (cmd);
|
||||||
|
if (argv)
|
||||||
if (!g_spawn_sync ("/", argv, envp, G_SPAWN_STDOUT_TO_DEV_NULL | G_SPAWN_STDERR_TO_DEV_NULL,
|
g_strfreev (argv);
|
||||||
share_child_setup, NULL, NULL, NULL, &status, &error)) {
|
|
||||||
nm_info ("Error executing command: (%d) %s",
|
|
||||||
error ? error->code : 0, (error && error->message) ? error->message : "unknown");
|
|
||||||
if (error)
|
|
||||||
g_error_free (error);
|
|
||||||
} else if (WEXITSTATUS (status))
|
|
||||||
nm_info ("** Command returned exit status %d.", WEXITSTATUS (status));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
g_slist_free (list);
|
g_slist_free (list);
|
||||||
|
Reference in New Issue
Block a user