From: Timo Sirainen Date: Thu, 3 Sep 2015 22:18:04 +0000 (+0300) Subject: login proxy: Added asserts to track that num_waiting_connections are correct. X-Git-Tag: 2.2.19.rc1~108 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=623eaaf530b2bd9cddbaeb88a211873ec9dee436;p=thirdparty%2Fdovecot%2Fcore.git login proxy: Added asserts to track that num_waiting_connections are correct. --- diff --git a/src/login-common/login-proxy-state.c b/src/login-common/login-proxy-state.c index ee14bf8b68..e6004ab3e6 100644 --- a/src/login-common/login-proxy-state.c +++ b/src/login-common/login-proxy-state.c @@ -66,9 +66,17 @@ static void login_proxy_state_close(struct login_proxy_state *state) void login_proxy_state_deinit(struct login_proxy_state **_state) { struct login_proxy_state *state = *_state; + struct hash_iterate_context *iter; + struct login_proxy_record *rec; *_state = NULL; + /* sanity check: */ + iter = hash_table_iterate_init(state->hash); + while (hash_table_iterate(iter, state->hash, &rec, &rec)) + i_assert(rec->num_waiting_connections == 0); + hash_table_iterate_deinit(&iter); + if (state->to_reopen != NULL) timeout_remove(&state->to_reopen); login_proxy_state_close(state); diff --git a/src/login-common/login-proxy.c b/src/login-common/login-proxy.c index 88fc005232..560df7fae9 100644 --- a/src/login-common/login-proxy.c +++ b/src/login-common/login-proxy.c @@ -202,6 +202,7 @@ static void proxy_fail_connect(struct login_proxy *proxy) } else { proxy->state_rec->last_failure = ioloop_timeval; } + i_assert(proxy->state_rec->num_waiting_connections > 0); proxy->state_rec->num_waiting_connections--; proxy->state_rec = NULL; } @@ -278,6 +279,7 @@ static void proxy_wait_connect(struct login_proxy *proxy) } proxy->connected = TRUE; proxy->state_rec->last_success = ioloop_timeval; + i_assert(proxy->state_rec->num_waiting_connections > 0); proxy->state_rec->num_waiting_connections--; proxy->state_rec = NULL; @@ -399,8 +401,10 @@ static void login_proxy_disconnect(struct login_proxy *proxy) if (proxy->to_notify != NULL) timeout_remove(&proxy->to_notify); - if (proxy->state_rec != NULL) + if (proxy->state_rec != NULL) { + i_assert(proxy->state_rec->num_waiting_connections > 0); proxy->state_rec->num_waiting_connections--; + } if (proxy->server_io != NULL) io_remove(&proxy->server_io);