static PgPool *admin_pool;
+/* only valid during processing */
+static const char *current_query;
+
+static bool syntax_error(PgSocket *admin)
+{
+ return admin_error(admin, "invalid command '%s', use SHOW HELP;",
+ current_query ? current_query : "<no query>");
+}
+
static bool exec_cmd(struct cmd_lookup *lookup, PgSocket *admin,
const char *cmd, const char *arg)
{
if (strcasecmp(lookup->word, cmd) == 0)
return lookup->func(admin, arg);
}
- return admin_error(admin, "syntax error, use SHOW HELP");
+ return syntax_error(admin);
}
bool admin_error(PgSocket *admin, const char *fmt, ...)
static bool admin_cmd_reload(PgSocket *admin, const char *arg)
{
if (arg && *arg)
- return admin_error(admin, "syntax error");
+ return syntax_error(admin);
if (!admin->admin_user)
return admin_error(admin, "admin access needed");
static bool admin_cmd_shutdown(PgSocket *admin, const char *arg)
{
if (arg && *arg)
- return admin_error(admin, "syntax error");
+ return syntax_error(admin);
if (!admin->admin_user)
return admin_error(admin, "admin access needed");
static bool admin_cmd_suspend(PgSocket *admin, const char *arg)
{
if (arg && *arg)
- return admin_error(admin, "syntax error");
+ return syntax_error(admin);
if (!admin->admin_user)
return admin_error(admin, "admin access needed");
char val[256];
bool res;
+ current_query = q;
+
if (regexec(&rc_cmd, q, MAX_GROUPS, grp, 0) == 0) {
copy_arg(q, grp, CMD_NAME, cmd, sizeof(cmd));
copy_arg(q, grp, CMD_ARG, arg, sizeof(arg));
} else
res = admin_set(admin, arg, val);
} else
- res = admin_error(admin, "unknown cmd: %s", q);
+ res = syntax_error(admin);
+
+ current_query = NULL;
if (!res)
disconnect_client(admin, true, "failure");