Added some checks and renamed according to changes made in elsewhere.

This commit is contained in:
vraatikka
2013-09-08 23:38:38 +03:00
parent e7e44667c3
commit d2a61c3f82

View File

@ -47,7 +47,8 @@ MySQLProtocol* mysql_protocol_init(
CHK_DCB(dcb); CHK_DCB(dcb);
} }
p = (MySQLProtocol *) calloc(1, sizeof(MySQLProtocol)); p = (MySQLProtocol *) calloc(1, sizeof(MySQLProtocol));
ss_dassert(p != NULL);
if (p == NULL) { if (p == NULL) {
int eno = errno; int eno = errno;
errno = 0; errno = 0;
@ -64,7 +65,7 @@ MySQLProtocol* mysql_protocol_init(
p->protocol_chk_top = CHK_NUM_PROTOCOL; p->protocol_chk_top = CHK_NUM_PROTOCOL;
p->protocol_chk_tail = CHK_NUM_PROTOCOL; p->protocol_chk_tail = CHK_NUM_PROTOCOL;
p->fd = dcb->fd; p->fd = dcb->fd;
p->descriptor = dcb; p->owner_dcb = dcb;
dcb->protocol = p; dcb->protocol = p;
CHK_PROTOCOL(p); CHK_PROTOCOL(p);
return_p: return_p:
@ -84,6 +85,8 @@ return_p:
void gw_mysql_close(MySQLProtocol **ptr) { void gw_mysql_close(MySQLProtocol **ptr) {
MySQLProtocol *conn = *ptr; MySQLProtocol *conn = *ptr;
ss_dassert(*ptr != NULL);
if (*ptr == NULL) if (*ptr == NULL)
return; return;
@ -120,7 +123,7 @@ void gw_mysql_close(MySQLProtocol **ptr) {
*/ */
int gw_read_backend_handshake(MySQLProtocol *conn) { int gw_read_backend_handshake(MySQLProtocol *conn) {
GWBUF *head = NULL; GWBUF *head = NULL;
DCB *dcb = conn->descriptor; DCB *dcb = conn->owner_dcb;
int n = -1; int n = -1;
uint8_t *payload = NULL; uint8_t *payload = NULL;
@ -202,10 +205,11 @@ int gw_decode_mysql_server_handshake(MySQLProtocol *conn, uint8_t *payload) {
// get scramble len // get scramble len
scramble_len = payload[0] -1; scramble_len = payload[0] -1;
ss_dassert(scramble_len > 8);
// skip 10 zero bytes // skip 10 zero bytes
payload += 11; payload += 11;
// copy the second part of the scramble // copy the second part of the scramble
memcpy(scramble_data_2, payload, scramble_len - 8); memcpy(scramble_data_2, payload, scramble_len - 8);
@ -228,7 +232,7 @@ int gw_receive_backend_auth(MySQLProtocol *conn) {
int rv = 1; int rv = 1;
int n = -1; int n = -1;
GWBUF *head = NULL; GWBUF *head = NULL;
DCB *dcb = conn->descriptor; DCB *dcb = conn->owner_dcb;
uint8_t *ptr = NULL; uint8_t *ptr = NULL;
if ((n = dcb_read(dcb, &head)) != -1) { if ((n = dcb_read(dcb, &head)) != -1) {
@ -280,7 +284,7 @@ int gw_send_authentication_to_backend(char *dbname, char *user, uint8_t *passwd,
if (strlen((char *)passwd)) if (strlen((char *)passwd))
curr_passwd = passwd; curr_passwd = passwd;
dcb = conn->descriptor; dcb = conn->owner_dcb;
#ifdef DEBUG_MYSQL_CONN #ifdef DEBUG_MYSQL_CONN
fprintf(stderr, ">> Sending credentials %s, %s, db %s\n", user, passwd, dbname); fprintf(stderr, ">> Sending credentials %s, %s, db %s\n", user, passwd, dbname);
@ -464,7 +468,7 @@ int gw_do_connect_to_backend(
struct sockaddr_in serv_addr; struct sockaddr_in serv_addr;
int rv; int rv;
int so = 0; int so = 0;
DCB* dcb = conn->descriptor; DCB* dcb = conn->owner_dcb;
CHK_DCB(dcb); CHK_DCB(dcb);
@ -487,7 +491,7 @@ int gw_do_connect_to_backend(
rv = -1; rv = -1;
goto return_rv; goto return_rv;
} }
/* Assign so to the caller dcb, conn->descriptor */ /* Assign so to the caller dcb, conn->owner_dcb */
dcb->fd = so; dcb->fd = so;
/* prepare for connect */ /* prepare for connect */
setipaddress(&serv_addr.sin_addr, host); setipaddress(&serv_addr.sin_addr, host);
@ -564,7 +568,7 @@ gw_mysql_protocol_state2string (int state) {
* Send a MySQL protocol Generic ERR message, to the dcb * Send a MySQL protocol Generic ERR message, to the dcb
* Note the errno and state are still fixed now * Note the errno and state are still fixed now
* *
* @param dcb Descriptor Control Block for the connection to which the OK is sent * @param dcb Owner_Dcb Control Block for the connection to which the OK is sent
* @param packet_number * @param packet_number
* @param in_affected_rows * @param in_affected_rows
* @param mysql_message * @param mysql_message
@ -604,7 +608,10 @@ mysql_send_custom_error (DCB *dcb, int packet_number, int in_affected_rows, cons
mysql_payload_size = sizeof(field_count) + sizeof(mysql_err) + sizeof(mysql_statemsg) + strlen(mysql_error_msg); mysql_payload_size = sizeof(field_count) + sizeof(mysql_err) + sizeof(mysql_statemsg) + strlen(mysql_error_msg);
// allocate memory for packet header + payload // allocate memory for packet header + payload
if ((buf = gwbuf_alloc(sizeof(mysql_packet_header) + mysql_payload_size)) == NULL) buf = gwbuf_alloc(sizeof(mysql_packet_header) + mysql_payload_size);
ss_dassert(buf != NULL);
if (buf == NULL)
{ {
return 0; return 0;
} }
@ -672,7 +679,7 @@ int gw_send_change_user_to_backend(char *dbname, char *user, uint8_t *passwd, My
if (strlen((char *)passwd)) if (strlen((char *)passwd))
curr_passwd = passwd; curr_passwd = passwd;
dcb = conn->descriptor; dcb = conn->owner_dcb;
#ifdef DEBUG_MYSQL_CONN #ifdef DEBUG_MYSQL_CONN
fprintf(stderr, ">> Sending credentials %s, %s, db %s\n", user, passwd, dbname); fprintf(stderr, ">> Sending credentials %s, %s, db %s\n", user, passwd, dbname);
@ -981,7 +988,7 @@ int gw_find_mysql_user_password_sha1(char *username, uint8_t *gateway_password,
* *
* Send a MySQL protocol ERR message, for gateway authentication error to the dcb * Send a MySQL protocol ERR message, for gateway authentication error to the dcb
* *
* @param dcb Descriptor Control Block for the connection to which the OK is sent * @param dcb descriptor Control Block for the connection to which the OK is sent
* @param packet_number * @param packet_number
* @param in_affected_rows * @param in_affected_rows
* @param mysql_message * @param mysql_message