Skip to content

Commit

Permalink
lib-master: Use more exact timestamp in master_login_auth_request fai…
Browse files Browse the repository at this point in the history
…lures
  • Loading branch information
sirainen committed May 18, 2018
1 parent 389a0ba commit 85ea0d3
Showing 1 changed file with 9 additions and 6 deletions.
15 changes: 9 additions & 6 deletions src/lib-master/master-login-auth.c
Expand Up @@ -11,6 +11,7 @@
#include "hash.h"
#include "str.h"
#include "strescape.h"
#include "time-util.h"
#include "master-interface.h"
#include "master-service.h"
#include "master-auth.h"
Expand All @@ -23,7 +24,7 @@ struct master_login_auth_request {
struct master_login_auth_request *prev, *next;

unsigned int id;
time_t create_stamp;
struct timeval create_stamp;

pid_t auth_pid;
unsigned int auth_id;
Expand Down Expand Up @@ -149,7 +150,7 @@ static unsigned int auth_get_next_timeout_secs(struct master_login_auth *auth)
{
time_t expires;

expires = auth->request_head->create_stamp +
expires = auth->request_head->create_stamp.tv_sec +
MASTER_AUTH_LOOKUP_TIMEOUT_SECS;
return expires <= ioloop_time ? 0 : expires - ioloop_time;
}
Expand All @@ -168,7 +169,7 @@ static void master_login_auth_timeout(struct master_login_auth *auth)

reason = t_strdup_printf(
"Auth server request timed out after %u secs",
(unsigned int)(ioloop_time - request->create_stamp));
(unsigned int)(ioloop_time - request->create_stamp.tv_sec));
request_internal_failure(request, reason);
i_free(request);
}
Expand Down Expand Up @@ -296,9 +297,10 @@ master_login_auth_input_fail(struct master_login_auth *auth,
"Internal auth failure");
} else {
i_error("Internal auth failure: %s "
"(Request took %ld secs, "
"(Request took %u msecs, "
"client-pid=%u client-id=%u)",
error, (long)(ioloop_time - request->create_stamp),
error, timeval_diff_msecs(&ioloop_timeval,
&request->create_stamp),
request->client_pid, request->auth_id);
request->callback(NULL, error, request->context);
}
Expand Down Expand Up @@ -478,8 +480,9 @@ void master_login_auth_request(struct master_login_auth *auth,
if (id == 0)
id++;

io_loop_time_refresh();
login_req = i_new(struct master_login_auth_request, 1);
login_req->create_stamp = ioloop_time;
login_req->create_stamp = ioloop_timeval;
login_req->id = id;
login_req->auth_pid = req->auth_pid;
login_req->client_pid = req->client_pid;
Expand Down

0 comments on commit 85ea0d3

Please sign in to comment.