GNUnet is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
- by the Free Software Foundation; either version 2, or (at your
+ by the Free Software Foundation; either version 3, or (at your
option) any later version.
GNUnet is distributed in the hope that it will be useful, but
pi.value.search.specifics.result.meta = sr->meta;
pi.value.search.specifics.result.uri = sr->uri;
pi.value.search.specifics.result.result = sr;
+ pi.value.search.specifics.result.applicability_rank = sr->optional_support;
sr->client_info = GNUNET_FS_search_make_status_ (&pi, sc);
}
sc->options,
NULL,
sr);
+ GNUNET_free (uu.data.sks.identifier);
}
}
/* decrypt */
GNUNET_CRYPTO_hash_to_aes_key (&sc->requests[i].key, &skey, &iv);
- GNUNET_CRYPTO_aes_decrypt (&kb[1],
- size - sizeof (struct KBlock),
- &skey,
- &iv,
- pt);
+ if (-1 == GNUNET_CRYPTO_aes_decrypt (&kb[1],
+ size - sizeof (struct KBlock),
+ &skey,
+ &iv,
+ pt))
+ {
+ GNUNET_break (0);
+ return;
+ }
/* parse */
eos = memchr (pt, 0, sizeof (pt));
if (NULL == eos)
}
/* decrypt */
GNUNET_CRYPTO_hash_to_aes_key (&sc->requests[i].key, &skey, &iv);
- GNUNET_CRYPTO_aes_decrypt (&nb[1],
- size - sizeof (struct NBlock),
- &skey,
- &iv,
- pt);
+ if (-1 == GNUNET_CRYPTO_aes_decrypt (&nb[1],
+ size - sizeof (struct NBlock),
+ &skey,
+ &iv,
+ pt))
+ {
+ GNUNET_break (0);
+ return;
+ }
/* parse */
eos = memchr (pt, 0, sizeof (pt));
if (NULL == eos)
strlen (identifier),
&key);
GNUNET_CRYPTO_hash_to_aes_key (&key, &skey, &iv);
- GNUNET_CRYPTO_aes_decrypt (&sb[1],
- len,
- &skey,
- &iv,
- pt);
+ if (-1 == GNUNET_CRYPTO_aes_decrypt (&sb[1],
+ len,
+ &skey,
+ &iv,
+ pt))
+ {
+ GNUNET_break (0);
+ return;
+ }
/* parse */
off = GNUNET_STRINGS_buffer_tokenize (pt,
len,
}
switch (type)
{
- case GNUNET_BLOCK_TYPE_KBLOCK:
+ case GNUNET_BLOCK_TYPE_FS_KBLOCK:
if (! GNUNET_FS_uri_test_ksk (sc->uri))
{
GNUNET_break (0);
}
process_kblock (sc, data, size);
break;
- case GNUNET_BLOCK_TYPE_SBLOCK:
+ case GNUNET_BLOCK_TYPE_FS_SBLOCK:
if (! GNUNET_FS_uri_test_sks (sc->uri))
{
GNUNET_break (0);
}
process_sblock (sc, data, size);
break;
- case GNUNET_BLOCK_TYPE_NBLOCK:
+ case GNUNET_BLOCK_TYPE_FS_NBLOCK:
if (! GNUNET_FS_uri_test_ksk (sc->uri))
{
GNUNET_break (0);
process_nblock (sc, data, size);
break;
case GNUNET_BLOCK_TYPE_ANY:
- case GNUNET_BLOCK_TYPE_DBLOCK:
- case GNUNET_BLOCK_TYPE_ONDEMAND:
- case GNUNET_BLOCK_TYPE_IBLOCK:
+ case GNUNET_BLOCK_TYPE_FS_DBLOCK:
+ case GNUNET_BLOCK_TYPE_FS_ONDEMAND:
+ case GNUNET_BLOCK_TYPE_FS_IBLOCK:
GNUNET_break (0);
break;
default:
sm->options = htonl (1);
else
sm->options = htonl (0);
- sm->type = htonl (GNUNET_BLOCK_TYPE_SBLOCK);
+ sm->type = htonl (GNUNET_BLOCK_TYPE_FS_SBLOCK);
sm->anonymity_level = htonl (sc->anonymity);
sm->target = sc->uri->data.sks.namespace;
identifier = sc->uri->data.sks.identifier;
keyword = &sc->uri->data.ksk.keywords[i][1];
GNUNET_CRYPTO_hash (keyword, strlen (keyword), &hc);
pk = GNUNET_CRYPTO_rsa_key_create_from_hash (&hc);
+ GNUNET_assert (pk != NULL);
GNUNET_CRYPTO_rsa_key_get_public (pk, &pub);
GNUNET_CRYPTO_rsa_key_free (pk);
GNUNET_CRYPTO_hash (&pub,
}
-/**
- * Create SUSPEND event for the given search operation
- * and then clean up our state (without stop signal).
- *
- * @param cls the 'struct GNUNET_FS_SearchContext' to signal for
- */
-static void
-search_signal_suspend (void *cls);
-
-
/**
* Signal suspend and free the given search result.
*
if (sr->download != NULL)
GNUNET_FS_download_signal_suspend_ (sr->download);
if (sr->update_search != NULL)
- search_signal_suspend (sr->update_search);
+ GNUNET_FS_search_signal_suspend_ (sr->update_search);
pi.status = GNUNET_FS_STATUS_SEARCH_RESULT_SUSPEND;
pi.value.search.specifics.result_suspend.cctx = sr->client_info;
pi.value.search.specifics.result_suspend.meta = sr->meta;
*
* @param cls the 'struct GNUNET_FS_SearchContext' to signal for
*/
-static void
-search_signal_suspend (void *cls)
+void
+GNUNET_FS_search_signal_suspend_ (void *cls)
{
struct GNUNET_FS_SearchContext *sc = cls;
struct GNUNET_FS_ProgressInfo pi;
GNUNET_free_non_null (sc->requests);
GNUNET_free_non_null (sc->emsg);
GNUNET_FS_uri_destroy (sc->uri);
+ GNUNET_free_non_null (sc->serialization);
GNUNET_free (sc);
}
{
struct GNUNET_FS_SearchContext *ret;
ret = search_start (h, uri, anonymity, options, cctx, NULL);
- ret->top = GNUNET_FS_make_top (h, &search_signal_suspend, ret);
+ if (ret == NULL)
+ return NULL;
+ ret->top = GNUNET_FS_make_top (h, &GNUNET_FS_search_signal_suspend_, ret);
return ret;
}
if (NULL != sr->download)
{
sr->download->search = NULL;
+ sr->download->top = GNUNET_FS_make_top (sr->download->h,
+ &GNUNET_FS_download_signal_suspend_,
+ sr->download);
if (NULL != sr->download->serialization)
{
GNUNET_FS_remove_sync_file_ (sc->h,
? GNUNET_FS_SYNC_PATH_CHILD_SEARCH
: GNUNET_FS_SYNC_PATH_MASTER_SEARCH,
sc->serialization);
+ GNUNET_free (sc->serialization);
}
pi.status = GNUNET_FS_STATUS_SEARCH_STOPPED;
sc->client_info = GNUNET_FS_search_make_status_ (&pi, sc);