void network_socket_free(network_socket *s) { if (!s) return; network_queue_free(s->send_queue); network_queue_free(s->recv_queue); network_queue_free(s->recv_queue_raw); if (s->response) network_mysqld_auth_response_free(s->response); if (s->challenge) network_mysqld_auth_challenge_free(s->challenge); network_address_free(s->dst); network_address_free(s->src); if (s->event.ev_base) { /* if .ev_base isn't set, the event never got added */ event_del(&(s->event)); } if (s->fd != -1) { closesocket(s->fd); } g_string_free(s->default_db, TRUE); g_string_free(s->charset_client, TRUE); g_string_free(s->charset_connection, TRUE); g_string_free(s->charset, TRUE); g_string_free(s->charset_results, TRUE); g_string_free(s->sql_mode, TRUE); g_free(s); }
void t_resultset_fields_parse_high(void) { strings packets[] = { { C("\1\0\0\1\2") }, /* 2 fields */ { C("6\0\0\2\3def\0\6STATUS\0\rVariable_name\rVariable_name\f\10\0P\0\0\0\375\1\0\0\0\0") }, { C("&\0\0\3\3def\0\6STATUS\0\5Value\5Value\f\10\0\0\2\0\0\375\1\0\0\0\0") }, { C("&\0\0\3\3def\0\6STATUS\0\5Value\5Value\f\10\0\0\2\0\0\375\1\0\0\0\0") }, { C("\5\0\0\4\376\0\0\"\0") }, /* EOF */ { C("\23\0\0\5\17Aborted_clients\00298") }, { C("\5\0\0\4\376\0\0\"\0") }, /* EOF */ { NULL, 0 } }; int i; network_queue *q; GPtrArray *fields; q = network_queue_new(); for (i = 0; packets[i].s; i++) { network_queue_append(q, g_string_new_len(packets[i].s, packets[i].s_len)); } fields = g_ptr_array_new(); g_assert(NULL == network_mysqld_proto_get_fielddefs(q->chunks->head, fields)); network_queue_free(q); }
/** * test that we can decode a 4.1 resultset header */ void t_resultset_fields_works(void) { strings packets[] = { { C("\1\0\0\1\2") }, /* 2 fields */ { C("6\0\0\2\3def\0\6STATUS\0\rVariable_name\rVariable_name\f\10\0P\0\0\0\375\1\0\0\0\0") }, { C("&\0\0\3\3def\0\6STATUS\0\5Value\5Value\f\10\0\0\2\0\0\375\1\0\0\0\0") }, { C("\5\0\0\4\376\0\0\"\0") }, /* EOF */ { C("\23\0\0\5\17Aborted_clients\00298") }, { C("\5\0\0\4\376\0\0\"\0") }, /* EOF */ { NULL, 0 } }; int i; network_queue *q; GPtrArray *fields; network_mysqld_proto_fielddef_t *coldef; q = network_queue_new(); for (i = 0; packets[i].s; i++) { network_queue_append(q, g_string_new_len(packets[i].s, packets[i].s_len)); } fields = g_ptr_array_new(); g_assert(NULL != network_mysqld_proto_get_fielddefs(q->chunks->head, fields)); g_assert_cmpint(fields->len, ==, 2); coldef = g_ptr_array_index(fields, 0); g_assert_cmpstr(coldef->catalog, ==, "def"); g_assert_cmpstr(coldef->db, ==, NULL); g_assert_cmpstr(coldef->table, ==, "STATUS"); g_assert_cmpstr(coldef->org_table, ==, NULL); g_assert_cmpstr(coldef->name, ==, "Variable_name"); g_assert_cmpstr(coldef->org_name, ==, "Variable_name"); g_assert_cmpint(coldef->charsetnr, ==, 0x08); g_assert_cmpint(coldef->length, ==, 80); g_assert_cmpint(coldef->type, ==, 0xfd); g_assert_cmpint(coldef->flags, ==, 0x01); g_assert_cmpint(coldef->decimals, ==, 0x00); coldef = g_ptr_array_index(fields, 1); g_assert_cmpstr(coldef->catalog, ==, "def"); g_assert_cmpstr(coldef->db, ==, NULL); g_assert_cmpstr(coldef->table, ==, "STATUS"); g_assert_cmpstr(coldef->org_table, ==, NULL); g_assert_cmpstr(coldef->name, ==, "Value"); g_assert_cmpstr(coldef->org_name, ==, "Value"); g_assert_cmpint(coldef->charsetnr, ==, 0x08); g_assert_cmpint(coldef->length, ==, 512); g_assert_cmpint(coldef->type, ==, 0xfd); g_assert_cmpint(coldef->flags, ==, 0x01); g_assert_cmpint(coldef->decimals, ==, 0x00); network_mysqld_proto_fielddefs_free(fields); network_queue_free(q); }