Skip to content

Commit

Permalink
doveadm director: Parse timestamp parameters with str_to_time()
Browse files Browse the repository at this point in the history
  • Loading branch information
sirainen committed Nov 7, 2017
1 parent 750a933 commit 04fd0f9
Showing 1 changed file with 10 additions and 8 deletions.
18 changes: 10 additions & 8 deletions src/doveadm/doveadm-director.c
Expand Up @@ -152,7 +152,7 @@ static void
cmd_director_status_user(struct director_context *ctx)
{
const char *line, *const *args;
unsigned int expires;
time_t expires;

director_send(ctx, t_strdup_printf("USER-LOOKUP\t%s\t%s\n", ctx->user,
ctx->tag != NULL ? ctx->tag : ""));
Expand All @@ -164,7 +164,7 @@ cmd_director_status_user(struct director_context *ctx)

args = t_strsplit_tabescaped(line);
if (str_array_length(args) != 4 ||
str_to_uint(args[1], &expires) < 0) {
str_to_time(args[1], &expires) < 0) {
i_error("Invalid reply from director");
doveadm_exit_code = EX_PROTOCOL;
return;
Expand Down Expand Up @@ -337,7 +337,8 @@ static void cmd_director_map(struct doveadm_cmd_context *cctx)
pool_t pool;
HASH_TABLE_TYPE(user_list) users;
struct user_list *user;
unsigned int ips_count, user_hash, expires;
unsigned int ips_count, user_hash;
time_t expires;

ctx = cmd_director_init(cctx);

Expand Down Expand Up @@ -402,7 +403,7 @@ static void cmd_director_map(struct doveadm_cmd_context *cctx)
args = t_strsplit_tabescaped(line);
if (str_array_length(args) < 3 ||
str_to_uint(args[0], &user_hash) < 0 ||
str_to_uint(args[1], &expires) < 0 ||
str_to_time(args[1], &expires) < 0 ||
net_addr2ip(args[2], &user_ip) < 0) {
i_error("Invalid USER-LIST reply: %s", line);
doveadm_exit_code = EX_PROTOCOL;
Expand Down Expand Up @@ -862,7 +863,6 @@ static void cmd_director_ring_status(struct doveadm_cmd_context *cctx)
{
struct director_context *ctx;
const char *line, *const *args;
unsigned long l;

ctx = cmd_director_init(cctx);

Expand All @@ -878,16 +878,18 @@ static void cmd_director_ring_status(struct doveadm_cmd_context *cctx)
if (*line == '\0')
break;
T_BEGIN {
time_t ts;

args = t_strsplit_tabescaped(line);
if (str_array_length(args) >= 5 &&
str_to_ulong(args[3], &l) == 0) {
str_to_time(args[3], &ts) == 0) {
doveadm_print(args[0]);
doveadm_print(args[1]);
doveadm_print(args[2]);
if (l == 0)
if (ts == 0)
doveadm_print("never");
else
doveadm_print(unixdate2str(l));
doveadm_print(unixdate2str(ts));
doveadm_print(args[4]);
}
} T_END;
Expand Down

0 comments on commit 04fd0f9

Please sign in to comment.