Beispiel #1
0
network_socket *network_socket_new() {
	network_socket *s;
	
	s = g_new0(network_socket, 1);

	s->send_queue = network_queue_new();
	s->recv_queue = network_queue_new();
	s->recv_queue_raw = network_queue_new();

    s->default_db = g_string_new(NULL);
    s->charset = g_string_new(NULL);
    s->charset_client = g_string_new(NULL);
    s->charset_connection = g_string_new(NULL);
    s->charset_results = g_string_new(NULL);
    s->sql_mode = g_string_new(NULL);

	s->fd           = -1;
	s->socket_type  = SOCK_STREAM; /* let's default to TCP */
	s->packet_id_is_reset = TRUE;

	s->src = network_address_new();
	s->dst = network_address_new();
    s->last_visit_time = time(0);

	return 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);
}
Beispiel #4
0
network_queue *network_queue_init() {
	return network_queue_new();
}