MXS-710: Fix regression
MaxScale would crash if two or more listeners used the same service and one of the listeners failed to start.
This commit is contained in:
@ -270,8 +270,6 @@ serviceStartPort(SERVICE *service, SERV_LISTENER *port)
|
|||||||
}
|
}
|
||||||
if (loaded == -1)
|
if (loaded == -1)
|
||||||
{
|
{
|
||||||
users_free(service->users);
|
|
||||||
service->users = NULL;
|
|
||||||
dcb_close(port->listener);
|
dcb_close(port->listener);
|
||||||
port->listener = NULL;
|
port->listener = NULL;
|
||||||
goto retblock;
|
goto retblock;
|
||||||
@ -353,10 +351,7 @@ serviceStartPort(SERVICE *service, SERV_LISTENER *port)
|
|||||||
|
|
||||||
if ((funcs = (GWPROTOCOL *)load_module(port->protocol, MODULE_PROTOCOL)) == NULL)
|
if ((funcs = (GWPROTOCOL *)load_module(port->protocol, MODULE_PROTOCOL)) == NULL)
|
||||||
{
|
{
|
||||||
users_free(service->users);
|
|
||||||
service->users = NULL;
|
|
||||||
dcb_close(port->listener);
|
dcb_close(port->listener);
|
||||||
service->users = NULL;
|
|
||||||
port->listener = NULL;
|
port->listener = NULL;
|
||||||
MXS_ERROR("Unable to load protocol module %s. Listener "
|
MXS_ERROR("Unable to load protocol module %s. Listener "
|
||||||
"for service %s not started.",
|
"for service %s not started.",
|
||||||
@ -389,11 +384,8 @@ serviceStartPort(SERVICE *service, SERV_LISTENER *port)
|
|||||||
MXS_ERROR("Failed to create session to service %s.",
|
MXS_ERROR("Failed to create session to service %s.",
|
||||||
service->name);
|
service->name);
|
||||||
|
|
||||||
users_free(service->users);
|
|
||||||
service->users = NULL;
|
|
||||||
dcb_close(port->listener);
|
dcb_close(port->listener);
|
||||||
port->listener = NULL;
|
port->listener = NULL;
|
||||||
service->users = NULL;
|
|
||||||
goto retblock;
|
goto retblock;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -403,8 +395,6 @@ serviceStartPort(SERVICE *service, SERV_LISTENER *port)
|
|||||||
port->port,
|
port->port,
|
||||||
port->protocol,
|
port->protocol,
|
||||||
service->name);
|
service->name);
|
||||||
users_free(service->users);
|
|
||||||
service->users = NULL;
|
|
||||||
dcb_close(port->listener);
|
dcb_close(port->listener);
|
||||||
port->listener = NULL;
|
port->listener = NULL;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user