aboutsummaryrefslogtreecommitdiff
path: root/src/gns/plugin_gnsrecord_gns.c
diff options
context:
space:
mode:
authorMartin Schanzenbach <schanzen@gnunet.org>2022-02-05 17:17:37 +0100
committerMartin Schanzenbach <schanzen@gnunet.org>2022-02-05 17:17:37 +0100
commitaa85ac347e31b22bcd86c6fbe9875dc4ffa93229 (patch)
tree91ed15a290b2a81ee4e8993e486d5a0de54cec37 /src/gns/plugin_gnsrecord_gns.c
parent32da9a943942efc8a1384f5a6839cc84f79a42db (diff)
downloadgnunet-aa85ac347e31b22bcd86c6fbe9875dc4ffa93229.tar.gz
gnunet-aa85ac347e31b22bcd86c6fbe9875dc4ffa93229.zip
GNS: Add tombstone string processing; also handle tombstones in monitor properly
Diffstat (limited to 'src/gns/plugin_gnsrecord_gns.c')
-rw-r--r--src/gns/plugin_gnsrecord_gns.c23
1 files changed, 21 insertions, 2 deletions
diff --git a/src/gns/plugin_gnsrecord_gns.c b/src/gns/plugin_gnsrecord_gns.c
index e74ec96ad..694dc6351 100644
--- a/src/gns/plugin_gnsrecord_gns.c
+++ b/src/gns/plugin_gnsrecord_gns.c
@@ -132,7 +132,12 @@ gns_value_to_string (void *cls,
132 GNUNET_free (ival); 132 GNUNET_free (ival);
133 return box_str; 133 return box_str;
134 } 134 }
135 135 case GNUNET_GNSRECORD_TYPE_TOMBSTONE: {
136 const struct GNUNET_GNSRECORD_TombstoneRecord *ts = data;
137 struct GNUNET_TIME_Absolute tod;
138 tod = GNUNET_TIME_absolute_ntoh (ts->time_of_death);
139 return GNUNET_strdup (GNUNET_STRINGS_absolute_time_to_string (tod));
140 }
136 default: 141 default:
137 return NULL; 142 return NULL;
138 } 143 }
@@ -183,7 +188,7 @@ gns_string_to_value (void *cls,
183 if (record_type != type) 188 if (record_type != type)
184 { 189 {
185 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, 190 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
186 _("Record type does not match parsed record type\n")); 191 _ ("Record type does not match parsed record type\n"));
187 return GNUNET_SYSERR; 192 return GNUNET_SYSERR;
188 } 193 }
189 return GNUNET_OK; 194 return GNUNET_OK;
@@ -297,6 +302,19 @@ gns_string_to_value (void *cls,
297 GNUNET_free (bval); 302 GNUNET_free (bval);
298 return GNUNET_OK; 303 return GNUNET_OK;
299 } 304 }
305 case GNUNET_GNSRECORD_TYPE_TOMBSTONE: {
306 struct GNUNET_TIME_Absolute tod;
307 struct GNUNET_TIME_AbsoluteNBO *tod_nbo;
308 if (GNUNET_OK != GNUNET_STRINGS_fancy_time_to_absolute (s,
309 &tod))
310 return GNUNET_SYSERR;
311 tod_nbo = GNUNET_new (struct GNUNET_TIME_AbsoluteNBO);
312 *tod_nbo = GNUNET_TIME_absolute_hton (tod);
313 *data_size = sizeof (*tod_nbo);
314 *data = tod_nbo;
315 return GNUNET_OK;
316 }
317
300 318
301 default: 319 default:
302 return GNUNET_SYSERR; 320 return GNUNET_SYSERR;
@@ -320,6 +338,7 @@ static struct
320 { "GNS2DNS", GNUNET_GNSRECORD_TYPE_GNS2DNS }, 338 { "GNS2DNS", GNUNET_GNSRECORD_TYPE_GNS2DNS },
321 { "BOX", GNUNET_GNSRECORD_TYPE_BOX }, 339 { "BOX", GNUNET_GNSRECORD_TYPE_BOX },
322 { "REDIRECT", GNUNET_GNSRECORD_TYPE_REDIRECT }, 340 { "REDIRECT", GNUNET_GNSRECORD_TYPE_REDIRECT },
341 { "TOMBSTONE", GNUNET_GNSRECORD_TYPE_TOMBSTONE },
323 { NULL, UINT32_MAX } }; 342 { NULL, UINT32_MAX } };
324 343
325 344