gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r20709 - gnunet/src/namestore


From: gnunet
Subject: [GNUnet-SVN] r20709 - gnunet/src/namestore
Date: Fri, 23 Mar 2012 11:17:40 +0100

Author: schanzen
Date: 2012-03-23 11:17:40 +0100 (Fri, 23 Mar 2012)
New Revision: 20709

Modified:
   gnunet/src/namestore/namestore_common.c
Log:
-MX


Modified: gnunet/src/namestore/namestore_common.c
===================================================================
--- gnunet/src/namestore/namestore_common.c     2012-03-23 10:13:27 UTC (rev 
20708)
+++ gnunet/src/namestore/namestore_common.c     2012-03-23 10:17:40 UTC (rev 
20709)
@@ -309,6 +309,8 @@
 {
   char tmp[INET6_ADDRSTRLEN];
   struct GNUNET_CRYPTO_ShortHashAsciiEncoded enc;
+  uint16_t mx_pref;
+  char* result;
 
   switch (type)
   {
@@ -329,13 +331,14 @@
     // FIXME
     return NULL;
   case GNUNET_DNSPARSER_TYPE_PTR:
-    GNUNET_break (0);
-    // FIXME
-    return NULL;
+    return GNUNET_strndup (data, data_size);
   case GNUNET_DNSPARSER_TYPE_MX:
-    GNUNET_break (0);
-    // FIXME
-    return NULL;
+    mx_pref = ntohs(*((uint16_t*)data));
+    if (GNUNET_asprintf(&result, "%hu,%s", mx_pref, data+sizeof(uint16_t))
+        != 0)
+      return result;
+    else
+      return NULL;
   case GNUNET_DNSPARSER_TYPE_TXT:
     return GNUNET_strndup (data, data_size);
   case GNUNET_DNSPARSER_TYPE_AAAA:
@@ -379,6 +382,9 @@
   struct in_addr value_a;
   struct in6_addr value_aaaa;
   struct GNUNET_CRYPTO_ShortHashCode pkey;
+  uint16_t mx_pref;
+  uint16_t mx_pref_n;
+  char result[253];
 
   switch (type)
   {
@@ -408,9 +414,14 @@
     // FIXME
     return GNUNET_SYSERR;
   case GNUNET_DNSPARSER_TYPE_MX:
-    GNUNET_break (0);
-    // FIXME
-    return GNUNET_SYSERR;
+    if (SSCANF(s, "%hu,%s", &mx_pref, result) != 2)
+      return GNUNET_SYSERR;
+    *data_size = sizeof (uint16_t)+strlen(result)+1;
+    *data = GNUNET_malloc (*data_size);
+    mx_pref_n = htons(mx_pref);
+    memcpy(*data, &mx_pref_n, sizeof (uint16_t));
+    strcpy((*data)+sizeof (uint16_t), result);
+    return GNUNET_OK;
   case GNUNET_DNSPARSER_TYPE_TXT:
     *data = GNUNET_strdup (s);
     *data_size = strlen (s);




reply via email to

[Prev in Thread] Current Thread [Next in Thread]