/**
* Useful for zone update for DHT put
*/
-static int num_public_records = 3600;
+static int num_public_records = 0;
/**
* update interval in seconds
*/
+static unsigned long long int max_record_put_interval;
+
static unsigned long long int dht_max_update_interval;
/* dht update interval FIXME define? */
-static struct GNUNET_TIME_Relative dht_update_interval;
+static struct GNUNET_TIME_Relative record_put_interval;
/* zone update task */
GNUNET_SCHEDULER_TaskIdentifier zone_update_taskid = GNUNET_SCHEDULER_NO_TASK;
/**
* Reschedule periodic put
*/
- zone_update_taskid = GNUNET_SCHEDULER_add_delayed (dht_update_interval,
+ zone_update_taskid = GNUNET_SCHEDULER_add_delayed (record_put_interval,
&update_zone_dht_next,
NULL);
update_zone_dht_start(void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
{
GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Scheduling DHT zone update!\n");
+
+ unsigned long long int interval = 0;
+
if (0 == num_public_records)
{
- dht_update_interval = GNUNET_TIME_relative_multiply(
+ /**
+ * If no records are known (startup) or none present
+ * we can safely set the interval to 1s
+ */
+ record_put_interval = GNUNET_TIME_relative_multiply(
GNUNET_TIME_UNIT_SECONDS,
- dht_max_update_interval);
+ 1);
GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
- "No records in db. Adjusted DHT update interval to %ds\n",
- dht_max_update_interval);
+ "No records in db. Adjusted record put interval to 1s\n");
}
else
{
-
- dht_update_interval = GNUNET_TIME_relative_multiply(
+ interval = max_record_put_interval/num_public_records;
+ if (interval == 0)
+ interval = 1;
+ record_put_interval = GNUNET_TIME_relative_multiply(
GNUNET_TIME_UNIT_SECONDS,
- (dht_max_update_interval/num_public_records));
+ interval);
GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
"Adjusted DHT update interval to %ds!\n",
- (dht_max_update_interval/num_public_records));
+ interval);
}
/* start counting again */
return;
}
- GNUNET_SERVER_notification_context_add (nc, client);
struct GNUNET_GNS_ClientShortenMessage *sh_msg =
(struct GNUNET_GNS_ClientShortenMessage *) message;
GNUNET_STRINGS_utf8_tolower((char*)&sh_msg[1], &nameptr);
if (strlen (name) < strlen(GNUNET_GNS_TLD)) {
+ GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
+ "SHORTEN: %s is too short", name);
+ csh->name = NULL;
+ send_shorten_response(csh, name);
+ return;
+ }
+
+ if (strlen (name) > MAX_DNS_NAME_LENGTH) {
+ GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
+ "SHORTEN: %s is too long", name);
csh->name = NULL;
send_shorten_response(csh, name);
return;
return;
}
+ GNUNET_SERVER_notification_context_add (nc, client);
+
/* Start shortening */
if (GNUNET_YES == auto_import_pkey)
gns_resolver_shorten_name(zone_hash, name, zone_key,
if (strlen(name) < strlen(GNUNET_GNS_TLD))
{
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "%s is too short. Returning\n", name);
+ "GET_AUTH: %s is too short. Returning\n", name);
cah->name = NULL;
send_get_auth_response(cah, name);
return;
}
-
+
+ if (strlen (name) > MAX_DNS_NAME_LENGTH) {
+ GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
+ "GET_AUTH: %s is too long", name);
+ cah->name = NULL;
+ send_get_auth_response(cah, name);
+ return;
+ }
+
if (strcmp(name+strlen(name)-strlen(GNUNET_GNS_TLD),
GNUNET_GNS_TLD) != 0)
{
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "%s is not our domain. Returning\n", name);
+ "GET_AUTH: %s is not our domain. Returning\n", name);
cah->name = NULL;
send_get_auth_response(cah, name);
return;
if (strcmp(name, GNUNET_GNS_TLD) == 0)
{
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "%s is us. Returning\n", name);
+ "GET_AUTH: %s is us. Returning\n", name);
cah->name = NULL;
send_get_auth_response(cah, name);
return;
clh->unique_id = sh_msg->id;
clh->type = ntohl(sh_msg->type);
+ if (strlen (name) > MAX_DNS_NAME_LENGTH) {
+ GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
+ "LOOKUP: %s is too long", name);
+ clh->name = NULL;
+ send_lookup_response(clh, 0, NULL);
+ return;
+ }
+
if (GNUNET_YES == auto_import_pkey)
{
gns_resolver_lookup_record(zone_hash, clh->type, name,
if (GNUNET_OK ==
GNUNET_CONFIGURATION_get_value_number (c, "gns",
- "DHT_MAX_UPDATE_INTERVAL",
+ "ZONE_PUT_INTERVAL",
&dht_max_update_interval))
{
GNUNET_log(GNUNET_ERROR_TYPE_INFO,
"DHT zone update interval: %d\n",
dht_max_update_interval);
}
+
+ max_record_put_interval = 1;
+ if (GNUNET_OK ==
+ GNUNET_CONFIGURATION_get_value_number (c, "gns",
+ "RECORD_PUT_INTERVAL",
+ &max_record_put_interval))
+ {
+ GNUNET_log(GNUNET_ERROR_TYPE_INFO,
+ "Record put interval: %d\n",
+ max_record_put_interval);
+ }
+
if (GNUNET_OK ==
GNUNET_CONFIGURATION_get_value_number (c, "gns",
"MAX_PARALLEL_BACKGROUND_QUERIES",
* for our records
* We have roughly an hour for all records;
*/
- dht_update_interval = GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_SECONDS,
+ record_put_interval = GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_SECONDS,
1);
zone_update_taskid = GNUNET_SCHEDULER_add_now (&update_zone_dht_start, NULL);