REORG: cli: move "shutdown sessions server" to stream.c

It could be argued that it's between server, stream and session but
at least due to the fact that it operates on streams, its best place
is in stream.c.
This commit is contained in:
Willy Tarreau 2016-11-23 16:50:48 +01:00
parent c429a1fc2d
commit 4e46b62ab1
2 changed files with 21 additions and 22 deletions

View File

@ -881,28 +881,6 @@ static int stats_sock_parse_request(struct stream_interface *si, char *line)
stream_shutdown(sess, SF_ERR_KILLED);
return 1;
}
else if (strcmp(args[1], "sessions") == 0) {
if (strcmp(args[2], "server") == 0) {
struct server *sv;
struct stream *sess, *sess_bck;
sv = expect_server_admin(s, si, args[3]);
if (!sv)
return 1;
/* kill all the stream that are on this server */
list_for_each_entry_safe(sess, sess_bck, &sv->actconns, by_srv)
if (sess->srv_conn == sv)
stream_shutdown(sess, SF_ERR_KILLED);
return 1;
}
else {
appctx->ctx.cli.msg = "'shutdown sessions' only supports 'server'.\n";
appctx->st0 = STAT_CLI_PRINT;
return 1;
}
}
else { /* unknown "disable" parameter */
appctx->ctx.cli.msg = "'shutdown' only supports 'frontend', 'session' and 'sessions'.\n";
appctx->st0 = STAT_CLI_PRINT;

View File

@ -3914,9 +3914,30 @@ static void cli_release_show_sess(struct appctx *appctx)
}
}
/* Parses the "shutdown session server" directive, it always returns 1 */
static int cli_parse_shutdown_sessions_server(char **args, struct appctx *appctx, void *private)
{
struct server *sv;
struct stream *strm, *strm_bck;
if (!cli_has_level(appctx, ACCESS_LVL_ADMIN))
return 1;
sv = cli_find_server(appctx, args[3]);
if (!sv)
return 1;
/* kill all the stream that are on this server */
list_for_each_entry_safe(strm, strm_bck, &sv->actconns, by_srv)
if (strm->srv_conn == sv)
stream_shutdown(strm, SF_ERR_KILLED);
return 1;
}
/* register cli keywords */
static struct cli_kw_list cli_kws = {{ },{
{ { "show", "sess", NULL }, "show sess [id] : report the list of current sessions or dump this session", cli_parse_show_sess, cli_io_handler_dump_sess, cli_release_show_sess },
{ { "shutdown", "sessions", "server" }, "shutdown sessions server : kill sessions on a server", cli_parse_shutdown_sessions_server, NULL, NULL },
{{},}
}};