/**
* 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;
{
GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
"Zone iteration finished. Rescheduling put in %ds\n",
- GNUNET_GNS_DHT_MAX_UPDATE_INTERVAL);
+ dht_max_update_interval);
zone_update_taskid = GNUNET_SCHEDULER_add_delayed (
GNUNET_TIME_relative_multiply(
GNUNET_TIME_UNIT_SECONDS,
- GNUNET_GNS_DHT_MAX_UPDATE_INTERVAL
+ dht_max_update_interval
),
&update_zone_dht_start,
NULL);
GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
"putting records for %s under key: %s with size %d\n",
name, (char*)&xor_hash_string, rd_payload_length);
+
+ GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
+ "DHT req to %d\n", DHT_OPERATION_TIMEOUT.rel_value);
GNUNET_DHT_put (dht_handle, &xor_hash,
DHT_GNS_REPLICATION_LEVEL,
/**
* 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,
- GNUNET_GNS_DHT_MAX_UPDATE_INTERVAL);
+ 1);
GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
- "No records in db. Adjusted DHT update interval to %ds\n",
- GNUNET_GNS_DHT_MAX_UPDATE_INTERVAL);
+ "No records in db. Adjusted record put interval to 1s\n");
}
else
{
-
- dht_update_interval = GNUNET_TIME_relative_multiply(
- GNUNET_TIME_UNIT_SECONDS,
- (3600/num_public_records));
+ interval = max_record_put_interval/num_public_records;
+ if (interval == 0)
+ interval = 1;
+ record_put_interval = GNUNET_TIME_relative_multiply(
+ GNUNET_TIME_UNIT_SECONDS,
+ interval);
GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
"Adjusted DHT update interval to %ds!\n",
- (3600/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,
char name[MAX_DNS_NAME_LENGTH];
char* nameptr = name;
+
if (ntohs (message->size) < sizeof (struct GNUNET_GNS_ClientGetAuthMessage))
{
GNUNET_break_op (0);
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,
}
+ dht_max_update_interval = GNUNET_GNS_DHT_MAX_UPDATE_INTERVAL;
+
+ if (GNUNET_OK ==
+ GNUNET_CONFIGURATION_get_value_number (c, "gns",
+ "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",
* handle to the dht
*/
dht_handle = GNUNET_DHT_connect(c,
- max_parallel_bg_queries); //FIXME get ht_len from cfg
+ //max_parallel_bg_queries); //FIXME get ht_len from cfg
+ 1024);
if (NULL == dht_handle)
{
* 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);