- put_interval = GNUNET_TIME_relative_max (MINIMUM_ZONE_ITERATION_INTERVAL,
- put_interval);
-
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Zone iteration finished. Adjusted zone iteration interval to %s\n",
- GNUNET_STRINGS_relative_time_to_string (put_interval, GNUNET_YES));
- GNUNET_STATISTICS_set (statistics,
- "Current zone iteration interval (in ms)",
- put_interval.rel_value,
- GNUNET_NO);
- GNUNET_STATISTICS_update (statistics,
- "Number of zone iterations", 1, GNUNET_NO);
- GNUNET_STATISTICS_set (statistics,
- "Number of public records in DHT",
- last_num_public_records,
- GNUNET_NO);
- if (0 == num_public_records)
- zone_publish_task = GNUNET_SCHEDULER_add_delayed (put_interval,
- &publish_zone_dht_start,
- NULL);
- else
- zone_publish_task = GNUNET_SCHEDULER_add_now (&publish_zone_dht_start, NULL);
- return;
- }
-
- namelen = strlen (name) + 1;
- if (0 == rd_count)
- {
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "No records for name `%s'! Skipping.\n",
- name);
- zone_publish_task = GNUNET_SCHEDULER_add_now (&publish_zone_dht_next,
- NULL);
- return;
- }
- if (NULL == signature)
- {
- GNUNET_break (0);
- zone_publish_task = GNUNET_SCHEDULER_add_now (&publish_zone_dht_next,
- NULL);
- return;
- }
-
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Putting records for `%s' into the DHT\n", name);
- rd_payload_length = GNUNET_NAMESTORE_records_get_size (rd_count, rd);
- nrb = GNUNET_malloc (rd_payload_length + namelen
- + sizeof (struct GNSNameRecordBlock));
- nrb->signature = *signature;
- nrb->public_key = *key;
- nrb->rd_count = htonl (rd_count);
- memcpy (&nrb[1], name, namelen);
- nrb_data = (char *) &nrb[1];
- nrb_data += namelen;
- rd_payload_length += sizeof(struct GNSNameRecordBlock) + namelen;
- GNUNET_CRYPTO_short_hash (key,
- sizeof (struct GNUNET_CRYPTO_EccPublicKeyBinaryEncoded),
- &zhash);
- if (-1 == GNUNET_NAMESTORE_records_serialize (rd_count,
- rd,
- rd_payload_length,
- nrb_data))
- {
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
- _("Records for name `%s' in zone %s too large to fit into DHT"),
- name,
- GNUNET_short_h2s (&zhash));
- GNUNET_free (nrb);
- zone_publish_task = GNUNET_SCHEDULER_add_now (&publish_zone_dht_next,
- NULL);
- return;