Don't reload users for dummy sessions

The service for a dummy session will be NULL. If authentication fails for
a dummy session, then no service level actions should be taken.

Only the binlogrouter can trigger authentication failure with a dummy
session as it creates connections before the service itself has started.
This commit is contained in:
Markus Mäkelä 2017-12-11 11:33:50 +02:00 committed by Johan Wikman
parent 357eb67a84
commit 66be882ae0
2 changed files with 6 additions and 2 deletions

View File

@ -1606,6 +1606,7 @@ service_update(SERVICE *service, char *router, char *user, char *auth)
*/
int service_refresh_users(SERVICE *service)
{
ss_dassert(service);
int ret = 1;
if (spinlock_acquire_nowait(&service->spin))

View File

@ -358,8 +358,11 @@ static void handle_error_response(DCB *dcb, GWBUF *buffer)
errcode == ER_DBACCESS_DENIED_ERROR ||
errcode == ER_ACCESS_DENIED_NO_PASSWORD_ERROR)
{
// Authentication failed, reload users
service_refresh_users(dcb->service);
if (dcb->session->state != SESSION_STATE_DUMMY)
{
// Authentication failed, reload users
service_refresh_users(dcb->service);
}
}
}