diff options
Diffstat (limited to 'src/providers')
-rw-r--r-- | src/providers/data_provider_fo.c | 3 | ||||
-rw-r--r-- | src/providers/fail_over.c | 9 | ||||
-rw-r--r-- | src/providers/fail_over.h | 2 |
3 files changed, 13 insertions, 1 deletions
diff --git a/src/providers/data_provider_fo.c b/src/providers/data_provider_fo.c index a1b96be3..69ade47b 100644 --- a/src/providers/data_provider_fo.c +++ b/src/providers/data_provider_fo.c @@ -531,6 +531,7 @@ static void be_resolve_server_done(struct tevent_req *subreq) struct tevent_req); struct be_resolve_server_state *state = tevent_req_data(req, struct be_resolve_server_state); + time_t timeout = fo_get_service_retry_timeout(state->svc->fo_service) + 1; int ret; ret = be_resolve_server_process(subreq, state, &new_subreq); @@ -546,7 +547,7 @@ static void be_resolve_server_done(struct tevent_req *subreq) /* FIXME: make the timeout configurable */ ret = be_primary_server_timeout_activate(state->ctx, state->ev, state->ctx, state->svc, - 30); + timeout); if (ret != EOK) { goto fail; } diff --git a/src/providers/fail_over.c b/src/providers/fail_over.c index f3bba37f..e7c44174 100644 --- a/src/providers/fail_over.c +++ b/src/providers/fail_over.c @@ -1555,6 +1555,15 @@ fo_get_server_hostname_last_change(struct fo_server *server) return server->common->last_status_change.tv_sec; } +time_t fo_get_service_retry_timeout(struct fo_service *svc) +{ + if (svc == NULL || svc->ctx == NULL || svc->ctx->opts == NULL) { + return 0; + } + + return svc->ctx->opts->retry_timeout; +} + void fo_reset_services(struct fo_ctx *fo_ctx) { struct fo_service *service; diff --git a/src/providers/fail_over.h b/src/providers/fail_over.h index 0eb21258..1ad081e7 100644 --- a/src/providers/fail_over.h +++ b/src/providers/fail_over.h @@ -192,6 +192,8 @@ time_t fo_get_server_hostname_last_change(struct fo_server *server); int fo_is_srv_lookup(struct fo_server *s); +time_t fo_get_service_retry_timeout(struct fo_service *svc); + void fo_reset_services(struct fo_ctx *fo_ctx); bool fo_svc_has_server(struct fo_service *service, struct fo_server *server); |