Bugzilla #455, MaxScale crashed due missing buffer type information in multi-buffer responses.

This commit is contained in:
VilhoRaatikka
2014-07-03 19:20:45 +03:00
parent a68d83ff7f
commit 39679447c9
6 changed files with 72 additions and 47 deletions

View File

@ -738,9 +738,9 @@ static void* newSession(
client_rses->rses_master_ref = master_ref;
/* assert with master_host */
ss_dassert(master_ref && (master_ref->bref_backend->backend_server && SERVER_MASTER));
client_rses->rses_capabilities = RCAP_TYPE_STMT_INPUT;
client_rses->rses_backend_ref = backend_ref;
client_rses->rses_nbackends = router_nservers; /*< # of backend servers */
client_rses->rses_capabilities = RCAP_TYPE_STMT_INPUT;
router->stats.n_sessions += 1;
/**
@ -1052,6 +1052,9 @@ static int routeQuery(
{
rses_is_closed = true;
}
ss_dassert(!GWBUF_IS_TYPE_UNDEFINED(querybuf));
packet = GWBUF_DATA(querybuf);
packet_type = packet[4];
@ -1564,10 +1567,6 @@ static void clientReply (
*/
writebuf = sescmd_cursor_process_replies(writebuf, bref);
}
else
{
ss_dassert(false);
}
/**
* If response will be sent to client, decrease waiter count.
* This applies to session commands only. Counter decrement
@ -1818,11 +1817,11 @@ static bool select_connect_backend_servers(
{
LOGIF(LD, (skygw_log_write(
LOGFILE_DEBUG,
"%lu [select_connect_backend_servers] Didn't find master ",
"for session %p rses %p.",
"%lu [select_connect_backend_servers] Session %p doesn't "
"currently have a master chosen. Proceeding to master "
"selection.",
pthread_self(),
session,
backend_ref)));
session)));
master_found = false;
master_connected = false;
@ -2004,7 +2003,8 @@ static bool select_connect_backend_servers(
}
}
/* take the master_host for master */
else if (master_host && (b->backend_server == master_host->backend_server))
else if (master_host &&
(b->backend_server == master_host->backend_server))
{
*p_master_ref = &backend_ref[i];