check_PROGRAMS = \
- $(SQLITE_TESTS)
+ $(SQLITE_TESTS) \
+ test_namestore_api \
+ test_namestore_api_zone_iteration \
+ test_namestore_record_serialization
if HAVE_EXPERIMENTAL
-check_PROGRAMS += test_namestore_api \
-test_namestore_api_zone_iteration \
-test_namestore_record_serialization
+ check_PROGRAMS
endif
lib_LTLIBRARIES = \
libgnunetnamestore.la
-
+
libgnunetnamestore_la_SOURCES = \
- namestore_api.c namestore.h
+ namestore_api.c namestore.h
libgnunetnamestore_la_LIBADD = \
$(top_builddir)/src/statistics/libgnunetstatistics.la \
$(top_builddir)/src/util/libgnunetutil.la \
test_namestore_api_SOURCES = \
- test_namestore_api.c
+ test_namestore_api.c \
+ namestore_common.c
test_namestore_api_LDADD = \
$(top_builddir)/src/util/libgnunetutil.la \
$(top_builddir)/src/namestore/libgnunetnamestore.la
test_namestore_api_zone_iteration_SOURCES = \
- test_namestore_api_zone_iteration.c
+ test_namestore_api_zone_iteration.c \
+ namestore_common.c
test_namestore_api_zone_iteration_LDADD = \
$(top_builddir)/src/util/libgnunetutil.la \
$(top_builddir)/src/namestore/libgnunetnamestore.la
size_t msg_size;
size_t msg_size_exp;
char * name;
+ char * rd_ser;
uint32_t id = 0;
+ uint32_t rd_ser_len;
uint32_t rd_count;
int res = GNUNET_SYSERR;
struct RecordPutMessage * rp_msg = (struct RecordPutMessage *) message;
id = ntohl (rp_msg->op_id);
name_len = ntohs (rp_msg->name_len);
- rd_count = ntohl(rp_msg->rd_count);
+ rd_ser_len = ntohs(rp_msg->rd_len);
msg_size = ntohs (message->size);
- msg_size_exp = sizeof (struct RecordPutMessage) + sizeof (struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded) + name_len + rd_count * (sizeof (struct GNUNET_NAMESTORE_RecordData));
+ msg_size_exp = sizeof (struct RecordPutMessage) + sizeof (struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded) + name_len + rd_ser_len;
if (msg_size != msg_size_exp)
{
name = (char *) &zone_key[1];
expire = GNUNET_TIME_absolute_ntoh(rp_msg->expire);
signature = (struct GNUNET_CRYPTO_RsaSignature *) &rp_msg->signature;
- rd = (struct GNUNET_NAMESTORE_RecordData *) &name[name_len];
+ rd_ser = &name[name_len];
+ rd_count = GNUNET_NAMESTORE_records_deserialize(&rd, rd_ser, rd_ser_len);
/* Database operation */
res = GSN_database->put_records(GSN_database->cls,
/* pointer to elements */
struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded *zone_key_tmp;
- struct GNUNET_NAMESTORE_RecordData *rd_tmp;
+ char * rd_tmp;
+ char * rd_ser;
char * name_tmp;
size_t msg_size = 0;
size_t name_len = strlen(name) + 1;
+ size_t rd_ser_len = 0;
uint32_t id = 0;
GNUNET_assert (NULL != h);
GNUNET_CONTAINER_DLL_insert_tail(h->op_head, h->op_tail, qe);
/* set msg_size*/
+ rd_ser_len = GNUNET_NAMESTORE_records_serialize(&rd_ser, rd_count, rd);
+
struct RecordPutMessage * msg;
- msg_size = sizeof (struct RecordPutMessage) + sizeof (struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded) + name_len + rd_count * (sizeof (struct GNUNET_NAMESTORE_RecordData));
+ msg_size = sizeof (struct RecordPutMessage) + sizeof (struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded) + name_len + rd_ser_len;
/* create msg here */
pe = GNUNET_malloc(sizeof (struct PendingMessage) + msg_size);
msg = (struct RecordPutMessage *) &pe[1];
zone_key_tmp = (struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded *) &msg[1];
name_tmp = (char *) &zone_key_tmp[1];
- rd_tmp = (struct GNUNET_NAMESTORE_RecordData *) &name_tmp[name_len];
+ rd_tmp = &name_tmp[name_len];
msg->header.type = htons (GNUNET_MESSAGE_TYPE_NAMESTORE_RECORD_PUT);
msg->header.size = htons (msg_size);
msg->name_len = htons (name_len);
memcpy (name_tmp, name, name_len);
msg->expire = GNUNET_TIME_absolute_hton (expire);
- msg->rd_count = htonl(rd_count);
- memcpy (rd_tmp, rd, rd_count * (sizeof (struct GNUNET_NAMESTORE_RecordData)));
+ msg->rd_len = htons (rd_ser_len);
+
+ memcpy (rd_tmp, rd_ser, rd_ser_len);
+ GNUNET_free (rd_ser);
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Sending `%s' message for name `%s' with size %u\n", "NAMESTORE_RECORD_PUT", name, msg_size);
{
struct GNUNET_NAMESTORE_QueueEntry *qe;
struct PendingMessage *pe;
- struct GNUNET_NAMESTORE_RecordData * rd_tmp;
char * name_tmp;
+ char * rd_tmp;
+ char * rd_ser;
+ size_t rd_ser_len = 0;
size_t msg_size = 0;
size_t name_len = 0;
uint32_t id = 0;
qe->op_id = id;
/* set msg_size*/
+ rd_ser_len = GNUNET_NAMESTORE_records_serialize(&rd_ser, 1, rd);
struct RecordCreateMessage * msg;
- msg_size = sizeof (struct RecordCreateMessage) + name_len + sizeof (struct GNUNET_NAMESTORE_RecordData);
+ msg_size = sizeof (struct RecordCreateMessage) + name_len + rd_ser_len;
/* create msg here */
pe = GNUNET_malloc(sizeof (struct PendingMessage) + msg_size);
msg = (struct RecordCreateMessage *) &pe[1];
name_tmp = (char *) &msg[1];
- rd_tmp = (struct GNUNET_NAMESTORE_RecordData *) &name_tmp[name_len];
+ rd_tmp = &name_tmp[name_len];
msg->header.type = htons (GNUNET_MESSAGE_TYPE_NAMESTORE_RECORD_CREATE);
msg->header.size = htons (msg_size);
//msg->signature = *signature;
msg->name_len = htons (name_len);
memcpy (name_tmp, name, name_len);
- memcpy (rd_tmp, rd, sizeof (struct GNUNET_NAMESTORE_RecordData));
+ memcpy (rd_tmp, rd_ser, rd_ser_len);
+ GNUNET_free (rd_ser);
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Sending `%s' message for name `%s' with size %u\n", "NAMESTORE_RECORD_CREATE", name, msg_size);
{
struct GNUNET_NAMESTORE_QueueEntry *qe;
struct PendingMessage *pe;
- struct GNUNET_NAMESTORE_RecordData * rd_tmp;
+ char * rd_tmp;
+ char * rd_ser;
char * name_tmp;
+ size_t rd_ser_len = 0;
size_t msg_size = 0;
size_t name_len = 0;
uint32_t id = 0;
qe->op_id = id;
/* set msg_size*/
+ rd_ser_len = GNUNET_NAMESTORE_records_serialize(&rd_ser, 1, rd);
struct RecordRemoveMessage * msg;
- msg_size = sizeof (struct RecordRemoveMessage) + name_len + sizeof (struct GNUNET_NAMESTORE_RecordData);
+ msg_size = sizeof (struct RecordRemoveMessage) + name_len + rd_ser_len;
/* create msg here */
pe = GNUNET_malloc(sizeof (struct PendingMessage) + msg_size);
msg = (struct RecordRemoveMessage *) &pe[1];
name_tmp = (char *) &msg[1];
- rd_tmp = (struct GNUNET_NAMESTORE_RecordData *) &name_tmp[name_len];
+ rd_tmp = &name_tmp[name_len];
msg->header.type = htons (GNUNET_MESSAGE_TYPE_NAMESTORE_RECORD_REMOVE);
msg->header.size = htons (msg_size);
//msg->signature = *signature;
msg->name_len = htons (name_len);
memcpy (name_tmp, name, name_len);
- memcpy (rd_tmp, rd, sizeof (struct GNUNET_NAMESTORE_RecordData));
+ memcpy (rd_tmp, rd_ser, rd_ser_len);
+ GNUNET_free (rd_ser);
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Sending `%s' message for name `%s' with size %u\n", "NAMESTORE_RECORD_REMOVE", name, msg_size);
static int res;
+#define TEST_RECORD_TYPE 1234
+#define TEST_RECORD_DATALEN 123
+#define TEST_RECORD_DATA 'a'
+
static void
start_arm (const char *cfgname)
struct GNUNET_CRYPTO_RsaSignature signature;
+ struct GNUNET_NAMESTORE_RecordData rd;
+
+ rd.expiration = GNUNET_TIME_absolute_get();
+ rd.record_type = TEST_RECORD_TYPE;
+ rd.data_size = TEST_RECORD_DATALEN;
+ rd.data = GNUNET_malloc(TEST_RECORD_DATALEN);
+ memset ((char *) rd.data, 'a', TEST_RECORD_DATALEN);
char * name = "dummy.dummy.gnunet";
start_arm (cfgfile);
GNUNET_NAMESTORE_record_put (nsh, &pubkey, name,
GNUNET_TIME_absolute_get_forever(),
- 0, NULL, &signature, put_cont, name);
+ 1, &rd, &signature, put_cont, name);
+
+ GNUNET_free ((void *)rd.data);
+
}
static int