diff options
author | nicm <nicm> | 2015-01-30 15:57:30 +0000 |
---|---|---|
committer | nicm <nicm> | 2015-01-30 15:57:30 +0000 |
commit | 4e03239d1f2edc4f2d9f90c2bb28d609b64ea566 (patch) | |
tree | b34d1ed9b2c42c56e4d2d0bd48ccf0e90771d414 /cmd-detach-client.c | |
parent | 144025e3e6ecd5503326a674de70075851e54a85 (diff) | |
download | rtmux-4e03239d1f2edc4f2d9f90c2bb28d609b64ea566.tar.gz rtmux-4e03239d1f2edc4f2d9f90c2bb28d609b64ea566.tar.bz2 rtmux-4e03239d1f2edc4f2d9f90c2bb28d609b64ea566.zip |
Tidy up detach-client a bit.
Diffstat (limited to 'cmd-detach-client.c')
-rw-r--r-- | cmd-detach-client.c | 47 |
1 files changed, 25 insertions, 22 deletions
diff --git a/cmd-detach-client.c b/cmd-detach-client.c index 600554a4..7f87d2c6 100644 --- a/cmd-detach-client.c +++ b/cmd-detach-client.c @@ -48,7 +48,7 @@ enum cmd_retval cmd_detach_client_exec(struct cmd *self, struct cmd_q *cmdq) { struct args *args = self->args; - struct client *c, *c2; + struct client *c, *cloop; struct session *s; enum msgtype msgtype; u_int i; @@ -73,32 +73,35 @@ cmd_detach_client_exec(struct cmd *self, struct cmd_q *cmdq) return (CMD_RETURN_ERROR); for (i = 0; i < ARRAY_LENGTH(&clients); i++) { - c = ARRAY_ITEM(&clients, i); - if (c == NULL || c->session != s) + cloop = ARRAY_ITEM(&clients, i); + if (cloop == NULL || cloop->session != s) continue; - server_write_client(c, msgtype, c->session->name, - strlen(c->session->name) + 1); + server_write_client(cloop, msgtype, + cloop->session->name, + strlen(cloop->session->name) + 1); } - } else { - c = cmd_find_client(cmdq, args_get(args, 't'), 0); - if (c == NULL) - return (CMD_RETURN_ERROR); + return (CMD_RETURN_STOP); + } - if (args_has(args, 'a')) { - for (i = 0; i < ARRAY_LENGTH(&clients); i++) { - c2 = ARRAY_ITEM(&clients, i); - if (c2 == NULL || c2->session == NULL || - c2 == c) - continue; - server_write_client(c2, msgtype, - c2->session->name, - strlen(c2->session->name) + 1); - } - } else { - server_write_client(c, msgtype, c->session->name, - strlen(c->session->name) + 1); + c = cmd_find_client(cmdq, args_get(args, 't'), 0); + if (c == NULL) + return (CMD_RETURN_ERROR); + + if (args_has(args, 'a')) { + for (i = 0; i < ARRAY_LENGTH(&clients); i++) { + cloop = ARRAY_ITEM(&clients, i); + if (cloop == NULL || cloop->session == NULL) + continue; + if (cloop == c) + continue; + server_write_client(cloop, msgtype, + cloop->session->name, + strlen(cloop->session->name) + 1); } + return (CMD_RETURN_NORMAL); } + server_write_client(c, msgtype, c->session->name, + strlen(c->session->name) + 1); return (CMD_RETURN_STOP); } |