gateway.c
file_write_footer, added checks for the case of failed memory allocation. service.c serviceRestart, added check for return value of poll_add_dcb. In failure, service is not moved to SESSION_STATE_LISTENER state and listener counter is not increased.
This commit is contained in:
@ -247,21 +247,27 @@ static bool file_write_header(
|
|||||||
const char* header_buf1;
|
const char* header_buf1;
|
||||||
char* header_buf2 = NULL;
|
char* header_buf2 = NULL;
|
||||||
const char* header_buf3;
|
const char* header_buf3;
|
||||||
time_t* t;
|
time_t* t = NULL;
|
||||||
struct tm* tm;
|
struct tm* tm = NULL;
|
||||||
|
|
||||||
|
if ((t = (time_t *)malloc(sizeof(time_t))) == NULL) {
|
||||||
|
goto return_succp;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((tm = (struct tm *)malloc(sizeof(struct tm))) == NULL) {
|
||||||
|
goto return_succp;
|
||||||
|
}
|
||||||
|
|
||||||
t = (time_t *)malloc(sizeof(time_t));
|
|
||||||
tm = (struct tm *)malloc(sizeof(struct tm));
|
|
||||||
*t = time(NULL);
|
*t = time(NULL);
|
||||||
*tm = *localtime(t);
|
*tm = *localtime(t);
|
||||||
|
|
||||||
header_buf1 = "\n\nSkySQL MaxScale\t";
|
header_buf1 = "\n\nSkySQL MaxScale\t";
|
||||||
header_buf2 = strdup(asctime(tm));
|
header_buf2 = strdup(asctime(tm));
|
||||||
header_buf3 = "------------------------------------------------------\n";
|
|
||||||
|
|
||||||
if (header_buf2 == NULL) {
|
if (header_buf2 == NULL) {
|
||||||
goto return_succp;
|
goto return_succp;
|
||||||
}
|
}
|
||||||
|
header_buf3 = "------------------------------------------------------\n";
|
||||||
|
|
||||||
len1 = strlen(header_buf1);
|
len1 = strlen(header_buf1);
|
||||||
len2 = strlen(header_buf2);
|
len2 = strlen(header_buf2);
|
||||||
@ -275,12 +281,17 @@ static bool file_write_header(
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
succp = true;
|
succp = true;
|
||||||
|
|
||||||
return_succp:
|
return_succp:
|
||||||
|
if (tm != NULL) {
|
||||||
|
free(tm);
|
||||||
|
}
|
||||||
|
if (t != NULL) {
|
||||||
|
free(t);
|
||||||
|
}
|
||||||
if (header_buf2 != NULL) {
|
if (header_buf2 != NULL) {
|
||||||
free(header_buf2);
|
free(header_buf2);
|
||||||
}
|
}
|
||||||
free(t);
|
|
||||||
free(tm);
|
|
||||||
return succp;
|
return succp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -273,10 +273,10 @@ int listeners = 0;
|
|||||||
port = service->ports;
|
port = service->ports;
|
||||||
while (port)
|
while (port)
|
||||||
{
|
{
|
||||||
poll_add_dcb(port->listener);
|
if (poll_add_dcb(port->listener) == 0) {
|
||||||
port->listener->session->state = SESSION_STATE_LISTENER;
|
port->listener->session->state = SESSION_STATE_LISTENER;
|
||||||
listeners++;
|
listeners++;
|
||||||
|
}
|
||||||
port = port->next;
|
port = port->next;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user