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,
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;
}
? 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);