[MEDIUM] stats: offer the possibility to kill sessions by server

It's now possible to issue "shutdown sessions server <back/srv>" and have
all this server's sessions immediately killed.
diff --git a/doc/configuration.txt b/doc/configuration.txt
index a1fa9ba..c5b7c61 100644
--- a/doc/configuration.txt
+++ b/doc/configuration.txt
@@ -9838,6 +9838,12 @@
   endless transfer is ongoing. Such terminated sessions are reported with a 'K'
   flag in the logs.
 
+shutdown sessions <backend>/<server>
+  Immediately terminate all the sessions attached to the specified server. This
+  can be used to terminate long-running sessions after a server is put into
+  maintenance mode, for instance. Such terminated sessions are reported with a
+  'K' flag in the logs.
+
 /*
  * Local variables:
  *  fill-column: 79
diff --git a/src/dumpstats.c b/src/dumpstats.c
index 1e49dc7..5dcd8c4 100644
--- a/src/dumpstats.c
+++ b/src/dumpstats.c
@@ -1313,8 +1313,30 @@
 			session_shutdown(sess, SN_ERR_KILLED);
 			return 1;
 		}
+		else if (strcmp(args[1], "sessions") == 0) {
+			if (strcmp(args[2], "server") == 0) {
+				struct server *sv;
+				struct session *sess, *sess_bck;
+
+				sv = expect_server_admin(s, si, args[3]);
+				if (!sv)
+					return 1;
+
+				/* kill all the session that are on this server */
+				list_for_each_entry_safe(sess, sess_bck, &sv->actconns, by_srv)
+					if (sess->srv_conn == sv)
+						session_shutdown(sess, SN_ERR_KILLED);
+
+				return 1;
+			}
+			else {
+				si->applet.ctx.cli.msg = "'shutdown sessions' only supports 'server'.\n";
+				si->applet.st0 = STAT_CLI_PRINT;
+				return 1;
+			}
+		}
 		else { /* unknown "disable" parameter */
-			si->applet.ctx.cli.msg = "'shutdown' only supports 'frontend' and 'session'.\n";
+			si->applet.ctx.cli.msg = "'shutdown' only supports 'frontend', 'session' and 'sessions'.\n";
 			si->applet.st0 = STAT_CLI_PRINT;
 			return 1;
 		}