args = strchr(line, ' ');
if (args != NULL)
*args++ = '\0';
- if (*line == '\0') {
- client_send_line(client, "-ERR Unknown command.");
+
+ const struct pop3_command *cmd = pop3_command_find(line);
+ if (cmd == NULL) {
+ client_send_line(client, "-ERR Unknown command: %s", line);
ret = -1;
} else T_BEGIN {
const char *reason_code =
- event_reason_code_prefix("pop3", "cmd_", line);
+ event_reason_code_prefix("pop3", "cmd_",
+ cmd->name);
struct event_reason *reason =
event_reason_begin(reason_code);
- ret = client_command_execute(client, line,
+ ret = client_command_execute(client, cmd,
args != NULL ? args : "");
event_reason_end(&reason);
} T_END;
}
int client_command_execute(struct client *client,
- const char *name, const char *args)
+ const struct pop3_command *cmd, const char *args)
{
while (*args == ' ') args++;
- const struct pop3_command *cmd = pop3_command_find(name);
- if (cmd != NULL)
- return cmd->func(client, args);
-
- client_send_line(client, "-ERR Unknown command: %s", name);
- return -1;
+ return cmd->func(client, args);
}
const struct pop3_command *pop3_command_find(const char *name);
int client_command_execute(struct client *client,
- const char *name, const char *args);
+ const struct pop3_command *cmd, const char *args);
#endif