Fixed a memory leak in schemarouter.
This commit is contained in:
@ -402,7 +402,7 @@ int gen_databaselist(ROUTER_INSTANCE* inst, ROUTER_CLIENT_SES* session)
|
|||||||
rval);
|
rval);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
gwbuf_free(buffer);
|
||||||
return !rval;
|
return !rval;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2223,6 +2223,7 @@ static void clientReply (
|
|||||||
*/
|
*/
|
||||||
if (!rses_begin_locked_router_action(router_cli_ses))
|
if (!rses_begin_locked_router_action(router_cli_ses))
|
||||||
{
|
{
|
||||||
|
while((writebuf = gwbuf_consume(writebuf,gwbuf_length(writebuf))));
|
||||||
goto lock_failed;
|
goto lock_failed;
|
||||||
}
|
}
|
||||||
/** Holding lock ensures that router session remains open */
|
/** Holding lock ensures that router session remains open */
|
||||||
@ -2252,6 +2253,7 @@ static void clientReply (
|
|||||||
if (!rses_begin_locked_router_action(router_cli_ses))
|
if (!rses_begin_locked_router_action(router_cli_ses))
|
||||||
{
|
{
|
||||||
/** Log to debug that router was closed */
|
/** Log to debug that router was closed */
|
||||||
|
while((writebuf = gwbuf_consume(writebuf,gwbuf_length(writebuf))));
|
||||||
goto lock_failed;
|
goto lock_failed;
|
||||||
}
|
}
|
||||||
bref = get_bref_from_dcb(router_cli_ses, backend_dcb);
|
bref = get_bref_from_dcb(router_cli_ses, backend_dcb);
|
||||||
@ -2260,6 +2262,7 @@ static void clientReply (
|
|||||||
{
|
{
|
||||||
/** Unlock router session */
|
/** Unlock router session */
|
||||||
rses_end_locked_router_action(router_cli_ses);
|
rses_end_locked_router_action(router_cli_ses);
|
||||||
|
while((writebuf = gwbuf_consume(writebuf,gwbuf_length(writebuf))));
|
||||||
goto lock_failed;
|
goto lock_failed;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2307,7 +2310,7 @@ static void clientReply (
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
gwbuf_free(writebuf);
|
while((writebuf = gwbuf_consume(writebuf,gwbuf_length(writebuf))));
|
||||||
|
|
||||||
if(mapped)
|
if(mapped)
|
||||||
{
|
{
|
||||||
@ -2330,7 +2333,10 @@ static void clientReply (
|
|||||||
router_cli_ses->connect_db);
|
router_cli_ses->connect_db);
|
||||||
router_cli_ses->rses_closed = true;
|
router_cli_ses->rses_closed = true;
|
||||||
if(router_cli_ses->queue)
|
if(router_cli_ses->queue)
|
||||||
gwbuf_free(router_cli_ses->queue);
|
{
|
||||||
|
while((router_cli_ses->queue = gwbuf_consume(
|
||||||
|
router_cli_ses->queue,gwbuf_length(router_cli_ses->queue))));
|
||||||
|
}
|
||||||
rses_end_locked_router_action(router_cli_ses);
|
rses_end_locked_router_action(router_cli_ses);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -2384,7 +2390,7 @@ static void clientReply (
|
|||||||
{
|
{
|
||||||
GWBUF* tmp = router_cli_ses->queue;
|
GWBUF* tmp = router_cli_ses->queue;
|
||||||
router_cli_ses->queue = router_cli_ses->queue->next;
|
router_cli_ses->queue = router_cli_ses->queue->next;
|
||||||
tmp->next = NULL;
|
tmp->next = NULL;
|
||||||
char* querystr = modutil_get_SQL(tmp);
|
char* querystr = modutil_get_SQL(tmp);
|
||||||
skygw_log_write(LOGFILE_DEBUG,"schemarouter: Sending queued buffer for session %p: %s",
|
skygw_log_write(LOGFILE_DEBUG,"schemarouter: Sending queued buffer for session %p: %s",
|
||||||
router_cli_ses->rses_client_dcb->session,
|
router_cli_ses->rses_client_dcb->session,
|
||||||
@ -2424,6 +2430,8 @@ static void clientReply (
|
|||||||
strcpy(router_cli_ses->rses_mysql_session->db,router_cli_ses->connect_db);
|
strcpy(router_cli_ses->rses_mysql_session->db,router_cli_ses->connect_db);
|
||||||
ss_dassert(router_cli_ses->init == INIT_READY);
|
ss_dassert(router_cli_ses->init == INIT_READY);
|
||||||
rses_end_locked_router_action(router_cli_ses);
|
rses_end_locked_router_action(router_cli_ses);
|
||||||
|
if(writebuf)
|
||||||
|
while((writebuf = gwbuf_consume(writebuf,gwbuf_length(writebuf))));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user