Fixed error messages causing a disconnect from the database.
This commit is contained in:
@ -1038,10 +1038,10 @@ GWBUF* gen_dummy_error(FW_SESSION* session, char* msg)
|
|||||||
char* errmsg;
|
char* errmsg;
|
||||||
DCB* dcb = session->session->client;
|
DCB* dcb = session->session->client;
|
||||||
MYSQL_session* mysql_session = (MYSQL_session*)session->session->data;
|
MYSQL_session* mysql_session = (MYSQL_session*)session->session->data;
|
||||||
unsigned int errlen, pktlen;
|
unsigned int errlen;
|
||||||
|
|
||||||
errlen = msg != NULL ? strlen(msg) : 0;
|
errlen = msg != NULL ? strlen(msg) : 0;
|
||||||
errmsg = malloc((512 + errlen)*sizeof(char));
|
errmsg = (char*)malloc((512 + errlen)*sizeof(char));
|
||||||
|
|
||||||
if(errmsg == NULL){
|
if(errmsg == NULL){
|
||||||
skygw_log_write_flush(LOGFILE_ERROR, "Fatal Error: malloc returned NULL.");
|
skygw_log_write_flush(LOGFILE_ERROR, "Fatal Error: malloc returned NULL.");
|
||||||
@ -1070,21 +1070,8 @@ GWBUF* gen_dummy_error(FW_SESSION* session, char* msg)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
errlen = strlen(errmsg);
|
buf = modutil_create_mysql_err_msg(1,0,1141,"HY000", (const char*)errmsg);
|
||||||
pktlen = errlen + 9;
|
|
||||||
buf = gwbuf_alloc(13 + errlen);
|
|
||||||
|
|
||||||
if(buf){
|
|
||||||
strcpy(buf->start + 7,"#HY000");
|
|
||||||
memcpy(buf->start + 13,errmsg,errlen);
|
|
||||||
*((unsigned char*)buf->start + 0) = pktlen;
|
|
||||||
*((unsigned char*)buf->start + 1) = pktlen >> 8;
|
|
||||||
*((unsigned char*)buf->start + 2) = pktlen >> 16;
|
|
||||||
*((unsigned char*)buf->start + 3) = 0x01;
|
|
||||||
*((unsigned char*)buf->start + 4) = 0xff;
|
|
||||||
*((unsigned char*)buf->start + 5) = (unsigned char)1141;
|
|
||||||
*((unsigned char*)buf->start + 6) = (unsigned char)(1141 >> 8);
|
|
||||||
}
|
|
||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1512,6 +1499,7 @@ routeQuery(FILTER *instance, void *session, GWBUF *queue)
|
|||||||
msg = my_session->errmsg;
|
msg = my_session->errmsg;
|
||||||
}
|
}
|
||||||
forward = gen_dummy_error(my_session,msg);
|
forward = gen_dummy_error(my_session,msg);
|
||||||
|
|
||||||
if(my_session->errmsg){
|
if(my_session->errmsg){
|
||||||
free(my_session->errmsg);
|
free(my_session->errmsg);
|
||||||
my_session->errmsg = NULL;
|
my_session->errmsg = NULL;
|
||||||
|
Reference in New Issue
Block a user