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:
Markus Makela
2016-11-09 06:42:52 +02:00
parent 5d930585f9
commit 7f500feb9d

View File

@ -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;
} }