}
/**
- * Determine if this name is canonical.
- * i.e.
+ * Determine if this name is canonical (is a legal name in a zone, without delegation);
+ * note that we do not test that the name does not contain illegal characters, we only
+ * test for delegation. Note that service records (i.e. _foo._srv) are canonical names
+ * even though they consist of multiple labels.
+ *
+ * Examples:
* a.b.gads = not canonical
- * a = canonical
+ * a = canonical
+ * _foo._srv = canonical
+ * _f.bar = not canonical
*
* @param name the name to test
* @return GNUNET_YES if canonical
*/
static int
-is_canonical (char* name)
+is_canonical (const char* name)
{
- char* ndup;
- char* tok;
-
- ndup = GNUNET_strdup (name);
- strtok (ndup, ".");
+ const char *pos;
+ const char *dot;
- for (tok = strtok (NULL, "."); tok != NULL; tok = strtok (NULL, "."))
- {
- /*
- * probably srv
- */
- if (*tok == '_')
- continue;
- GNUNET_free (ndup);
+ if (NULL == strchr (name, '.'))
+ return GNUNET_YES;
+ if ('_' != name[0])
return GNUNET_NO;
- }
- GNUNET_free (ndup);
+ pos = &name[1];
+ while (NULL != (dot = strchr (pos, '.')))
+ if ('_' != dot[1])
+ return GNUNET_NO;
+ else
+ pos = dot + 1;
return GNUNET_YES;
}
create_pkey_cont (void* cls, int32_t success, const char* emsg)
{
//FIXME do sth with error
- struct GetPseuAuthorityHandle* gph = (struct GetPseuAuthorityHandle*)cls;
+ struct GetPseuAuthorityHandle* gph = cls;
gph->namestore_task = NULL;
GNUNET_free (gph->auth);
const struct GNUNET_NAMESTORE_RecordData *rd,
const struct GNUNET_CRYPTO_RsaSignature *signature)
{
- struct GetPseuAuthorityHandle* gph = (struct GetPseuAuthorityHandle*)cls;
+ struct GetPseuAuthorityHandle* gph = cls;
struct GNUNET_NAMESTORE_RecordData new_pkey;
gph->namestore_task = NULL;
{
struct GetPseuAuthorityHandle* gph = cls;
struct GNSNameRecordBlock *nrb;
- char* rd_data = (char*)data;
+ const char* rd_data = data;
char* name;
int num_records;
size_t rd_size;
gph->get_handle = NULL;
GNUNET_SCHEDULER_cancel (gph->timeout);
- if (data == NULL)
+ if (NULL == data)
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"GNS_GET_AUTH: got dht result null!\n", size);
}
+
static void
start_shorten (struct AuthorityChain *auth,
- struct GNUNET_CRYPTO_RsaPrivateKey *key)
+ const struct GNUNET_CRYPTO_RsaPrivateKey *key)
{
struct GetPseuAuthorityHandle *gph;
struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded pkey;
struct GNUNET_CRYPTO_RsaPrivateKeyBinaryEncoded *pb_key;
GNUNET_CRYPTO_rsa_key_get_public (key, &pkey);
- pb_key = GNUNET_CRYPTO_rsa_encode_key (key);
-
- if (NULL == pb_key)
+ if (NULL == (pb_key = GNUNET_CRYPTO_rsa_encode_key (key)))
{
GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
"Failed to encode RSA key on shorten\n");
}
gph = GNUNET_malloc (sizeof (struct GetPseuAuthorityHandle));
- gph->key = GNUNET_CRYPTO_rsa_decode_key ((char*)pb_key, ntohs (pb_key->len));
+ gph->key = GNUNET_CRYPTO_rsa_decode_key ((const char*) pb_key, ntohs (pb_key->len));
if (NULL == gph->key)
{
unsigned long long max_bg_queries,
int ignore_pending)
{
- if (NULL == nh)
- return GNUNET_SYSERR;
- if (NULL == dh)
+ if ( (NULL == nh) ||
+ (NULL == dh) )
return GNUNET_SYSERR;
cfg = c;
GNUNET_CONTAINER_heap_create (GNUNET_CONTAINER_HEAP_ORDER_MIN);
max_allowed_background_queries = max_bg_queries;
max_allowed_ns_tasks = GNUNET_GNS_MAX_NS_TASKS;
- ignore_pending_records = ignore_pending;
- gph_head = NULL;
- gph_tail = NULL;
- rlh_head = NULL;
- rlh_tail = NULL;
- nsh_head = NULL;
- nsh_tail = NULL;
- nah_head = NULL;
- nah_tail = NULL;
-
+ ignore_pending_records = ignore_pending;
GNUNET_RESOLVER_connect (cfg);
return GNUNET_OK;
}
}
next_authority = rh->authority_chain_head;
- GNUNET_snprintf(tmp_name, MAX_DNS_NAME_LENGTH,
- "%s.%s", rh->name, next_authority->name);
+ if (0 == strcmp (rh->name, ""))
+ strcpy (tmp_name, next_authority->name);
+ else
+ GNUNET_snprintf(tmp_name, MAX_DNS_NAME_LENGTH,
+ "%s.%s", rh->name, next_authority->name);
strcpy(rh->name, tmp_name);
GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
}
next_authority = rh->authority_chain_head;
- GNUNET_snprintf(tmp_name, MAX_DNS_NAME_LENGTH,
- "%s.%s", rh->name, next_authority->name);
+ if (0 == strcmp (rh->name, ""))
+ strcpy (tmp_name, next_authority->name);
+ else
+ GNUNET_snprintf(tmp_name, MAX_DNS_NAME_LENGTH,
+ "%s.%s", rh->name, next_authority->name);
strcpy(rh->name, tmp_name);
GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
}
next_authority = rh->authority_chain_head;
- GNUNET_snprintf(tmp_name, MAX_DNS_NAME_LENGTH,
- "%s.%s", rh->name, next_authority->name);
+ if (0 == strcmp (rh->name, ""))
+ strcpy (tmp_name, next_authority->name);
+ else
+ GNUNET_snprintf(tmp_name, MAX_DNS_NAME_LENGTH,
+ "%s.%s", rh->name, next_authority->name);
strcpy(rh->name, tmp_name);
GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,