authd/provider: exit on critical errors
This commit is contained in:
parent
1e89fb5fa2
commit
c23f97550f
1 changed files with 15 additions and 13 deletions
|
@ -67,7 +67,8 @@ load_provider(struct auth_provider *provider)
|
||||||
{
|
{
|
||||||
if(rb_dlink_list_length(&auth_providers) >= MAX_PROVIDERS)
|
if(rb_dlink_list_length(&auth_providers) >= MAX_PROVIDERS)
|
||||||
{
|
{
|
||||||
warn_opers(L_CRIT, "Exceeded maximum level of authd providers (%d max)", MAX_PROVIDERS);
|
warn_opers(L_WARN, "provider: cannot load provider with id %d: maximum reached (%d)",
|
||||||
|
provider->id, MAX_PROVIDERS);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -142,6 +143,8 @@ destroy_providers(void)
|
||||||
if(provider->destroy)
|
if(provider->destroy)
|
||||||
provider->destroy();
|
provider->destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rb_event_delete(timeout_ev);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Cancel outstanding providers for a client */
|
/* Cancel outstanding providers for a client */
|
||||||
|
@ -261,9 +264,8 @@ start_auth(const char *cid, const char *l_ip, const char *l_port, const char *c_
|
||||||
rb_dictionary_add(auth_clients, RB_UINT_TO_POINTER(auth->cid), auth);
|
rb_dictionary_add(auth_clients, RB_UINT_TO_POINTER(auth->cid), auth);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
warn_opers(L_CRIT, "BUG: duplicate client added via start_auth: %x", auth->cid);
|
warn_opers(L_CRIT, "provider: duplicate client added via start_auth: %x", auth->cid);
|
||||||
rb_free(auth);
|
exit(EX_PROVIDER_ERROR);
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
rb_strlcpy(auth->l_ip, l_ip, sizeof(auth->l_ip));
|
rb_strlcpy(auth->l_ip, l_ip, sizeof(auth->l_ip));
|
||||||
|
@ -321,8 +323,8 @@ handle_new_connection(int parc, char *parv[])
|
||||||
{
|
{
|
||||||
if(parc < 6)
|
if(parc < 6)
|
||||||
{
|
{
|
||||||
warn_opers(L_CRIT, "BUG: received too few params for new connection (6 expected, got %d)", parc);
|
warn_opers(L_CRIT, "provider: received too few params for new connection (6 expected, got %d)", parc);
|
||||||
return;
|
exit(EX_PROVIDER_ERROR);
|
||||||
}
|
}
|
||||||
|
|
||||||
start_auth(parv[1], parv[2], parv[3], parv[4], parv[5]);
|
start_auth(parv[1], parv[2], parv[3], parv[4], parv[5]);
|
||||||
|
@ -336,20 +338,20 @@ handle_cancel_connection(int parc, char *parv[])
|
||||||
|
|
||||||
if(parc < 2)
|
if(parc < 2)
|
||||||
{
|
{
|
||||||
warn_opers(L_CRIT, "BUG: received too few params for new connection (2 expected, got %d)", parc);
|
warn_opers(L_CRIT, "provider: received too few params for new connection (2 expected, got %d)", parc);
|
||||||
return;
|
exit(EX_PROVIDER_ERROR);
|
||||||
}
|
}
|
||||||
|
|
||||||
if((lcid = strtol(parv[1], NULL, 16)) > UINT32_MAX)
|
if((lcid = strtol(parv[1], NULL, 16)) > UINT32_MAX)
|
||||||
{
|
{
|
||||||
warn_opers(L_CRIT, "BUG: got a request to cancel a connection that can't exist: %lx", lcid);
|
warn_opers(L_CRIT, "provider: got a request to cancel a connection that can't exist: %lx", lcid);
|
||||||
return;
|
exit(EX_PROVIDER_ERROR);
|
||||||
}
|
}
|
||||||
|
|
||||||
if((auth = rb_dictionary_retrieve(auth_clients, RB_UINT_TO_POINTER((uint32_t)lcid))) == NULL)
|
if((auth = rb_dictionary_retrieve(auth_clients, RB_UINT_TO_POINTER((uint32_t)lcid))) == NULL)
|
||||||
{
|
{
|
||||||
warn_opers(L_CRIT, "BUG: tried to cancel nonexistent connection %lx", lcid);
|
warn_opers(L_CRIT, "provider: tried to cancel nonexistent connection %lx", lcid);
|
||||||
return;
|
exit(EX_PROVIDER_ERROR);
|
||||||
}
|
}
|
||||||
|
|
||||||
cancel_providers(auth);
|
cancel_providers(auth);
|
||||||
|
@ -372,7 +374,7 @@ provider_timeout_event(void *notused __unused)
|
||||||
const time_t timeout = auth->timeout[provider->id];
|
const time_t timeout = auth->timeout[provider->id];
|
||||||
|
|
||||||
if(is_provider_on(auth, provider->id) && provider->timeout != NULL &&
|
if(is_provider_on(auth, provider->id) && provider->timeout != NULL &&
|
||||||
timeout && timeout < curtime)
|
timeout > 0 && timeout < curtime)
|
||||||
{
|
{
|
||||||
provider->timeout(auth);
|
provider->timeout(auth);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue