44#define CHK_PER_INODE 256
50#define MAX_INLINE_SIZE 65536
55#define GNUNET_FS_SYNC_PATH_MASTER_SEARCH "search"
60#define GNUNET_FS_SYNC_PATH_CHILD_SEARCH "search-child"
66#define GNUNET_FS_SYNC_PATH_MASTER_DOWNLOAD "download"
72#define GNUNET_FS_SYNC_PATH_CHILD_DOWNLOAD "download-child"
77#define GNUNET_FS_SYNC_PATH_MASTER_PUBLISH "publish"
82#define GNUNET_FS_SYNC_PATH_FILE_INFO "publish-file"
87#define GNUNET_FS_SYNC_PATH_MASTER_UNINDEX "unindex"
FS block formats (shared between FS and Block)
definitions for the entire fs module
BlockRequestState
FSM for possible states a block can go through.
@ BRS_DOWNLOAD_UP
This block and all of its children have been downloaded successfully (full completion propagates up).
@ BRS_RECONSTRUCT_META_UP
We've calculated the CHK bottom-up based on the meta data.
@ BRS_CHK_SET
We've determined the real, desired CHK for this block (full tree reconstruction failed),...
@ BRS_ERROR
We got a block back that matched the query but did not hash to the key (malicious publisher or hash c...
@ BRS_RECONSTRUCT_DOWN
We've checked the block on the path down the tree, and the content on disk did match the desired CHK,...
@ BRS_INIT
Initial state, block has only been allocated (since it is relevant to the overall download request).
@ BRS_DOWNLOAD_DOWN
We've successfully downloaded this block, but the children still need to be either downloaded or veri...
@ BRS_RECONSTRUCT_UP
We've calculated the CHK bottom-up based on what we have on disk, which may not be what the desired C...
void GNUNET_FS_download_signal_suspend_(void *cls)
Create SUSPEND event for the given download operation and then clean up our state (without stop signa...
void GNUNET_FS_search_result_sync_(struct GNUNET_FS_SearchResult *sr)
Synchronize this search result with its mirror on disk.
void * GNUNET_FS_search_make_status_(struct GNUNET_FS_ProgressInfo *pi, struct GNUNET_FS_Handle *h, struct GNUNET_FS_SearchContext *sc)
Fill in all of the generic fields for a search event and call the callback.
UnindexState
Phases of unindex processing (state machine).
@ UNINDEX_STATE_EXTRACT_KEYWORDS
Find out which keywords apply.
@ UNINDEX_STATE_COMPLETE
We're done.
@ UNINDEX_STATE_DS_REMOVE
We're telling the datastore to delete the respective DBlocks and IBlocks.
@ UNINDEX_STATE_HASHING
We're currently hashing the file.
@ UNINDEX_STATE_ERROR
We've encountered a fatal error.
@ UNINDEX_STATE_FS_NOTIFY
We're notifying the FS service about the unindexing.
@ UNINDEX_STATE_DS_REMOVE_KBLOCKS
We're telling the datastore to remove KBlocks.
GNUNET_FS_UriType
Types of URIs.
@ GNUNET_FS_URI_LOC
Location (chk with identity of hosting peer).
@ GNUNET_FS_URI_CHK
Content-hash-key (simple file).
@ GNUNET_FS_URI_SKS
Signed key space (file in namespace).
@ GNUNET_FS_URI_KSK
Keyword search key (query with keywords).
void GNUNET_FS_unindex_sync_(struct GNUNET_FS_UnindexContext *uc)
Synchronize this unindex struct with its mirror on disk.
void GNUNET_FS_unindex_do_remove_kblocks_(struct GNUNET_FS_UnindexContext *uc)
If necessary, connect to the datastore and remove the KBlocks.
void GNUNET_FS_search_sync_(struct GNUNET_FS_SearchContext *sc)
Synchronize this search struct with its mirror on disk.
void GNUNET_FS_free_download_request_(struct DownloadRequest *dr)
(recursively) free download request structure
void GNUNET_FS_stop_probe_ping_task_(struct GNUNET_FS_SearchResult *sr)
Stop the ping task for this search result.
void GNUNET_FS_publish_signal_suspend_(void *cls)
Create SUSPEND event for the given publish operation and then clean up our state (without stop signal...
struct GNUNET_FS_QueueEntry * GNUNET_FS_queue_(struct GNUNET_FS_Handle *h, GNUNET_SCHEDULER_TaskCallback start, GNUNET_SCHEDULER_TaskCallback stop, void *cls, unsigned int blocks, enum GNUNET_FS_QueuePriority priority)
Add a job to the queue.
void * GNUNET_FS_search_probe_progress_(void *cls, const struct GNUNET_FS_ProgressInfo *info)
Notification of FS that a search probe has made progress.
void GNUNET_FS_unindex_make_status_(struct GNUNET_FS_ProgressInfo *pi, struct GNUNET_FS_UnindexContext *uc, uint64_t offset)
Fill in all of the generic fields for an unindex event and call the callback.
void * GNUNET_FS_make_file_reader_context_(const char *filename)
Create the closure for the GNUNET_FS_data_reader_file_() callback.
size_t GNUNET_FS_data_reader_copy_(void *cls, uint64_t offset, size_t max, void *buf, char **emsg)
Function that provides data by copying from a buffer.
void GNUNET_FS_download_make_status_(struct GNUNET_FS_ProgressInfo *pi, struct GNUNET_FS_DownloadContext *dc)
Fill in all of the generic fields for a download event and call the callback.
void GNUNET_FS_download_start_task_(void *cls)
Task that creates the initial (top-level) download request for the file.
void GNUNET_FS_unindex_do_extract_keywords_(struct GNUNET_FS_UnindexContext *uc)
Extract the keywords for KBlock removal.
void GNUNET_FS_unindex_do_remove_(struct GNUNET_FS_UnindexContext *uc)
Connect to the datastore and remove the blocks.
void * GNUNET_FS_publish_make_status_(struct GNUNET_FS_ProgressInfo *pi, struct GNUNET_FS_PublishContext *pc, const struct GNUNET_FS_FileInformation *p, uint64_t offset)
Fill in all of the generic fields for a publish event and call the callback.
void GNUNET_FS_search_start_probe_(struct GNUNET_FS_SearchResult *sr)
Start download probes for the given search result.
void GNUNET_FS_download_sync_(struct GNUNET_FS_DownloadContext *dc)
Synchronize this download struct with its mirror on disk.
GNUNET_FS_QueuePriority
Priorities for the queue.
@ GNUNET_FS_QUEUE_PRIORITY_NORMAL
Default priority.
@ GNUNET_FS_QUEUE_PRIORITY_PROBE
This is a probe (low priority).
void GNUNET_FS_file_information_sync_(struct GNUNET_FS_FileInformation *f)
Synchronize this file-information struct with its mirror on disk.
void(* SuspendSignalFunction)(void *cls)
Function signature of the functions that can be called to trigger suspend signals and clean-up for to...
void GNUNET_FS_remove_sync_file_(struct GNUNET_FS_Handle *h, const char *ext, const char *ent)
Remove serialization/deserialization file from disk.
void GNUNET_FS_unindex_signal_suspend_(void *cls)
Create SUSPEND event for the given unindex operation and then clean up our state (without stop signal...
void GNUNET_FS_download_start_downloading_(struct GNUNET_FS_DownloadContext *dc)
Start the downloading process (by entering the queue).
int GNUNET_FS_search_start_searching_(struct GNUNET_FS_SearchContext *sc)
Build the request and actually initiate the search using the GNUnet FS service.
struct TopLevelActivity * GNUNET_FS_make_top(struct GNUNET_FS_Handle *h, SuspendSignalFunction ssf, void *ssf_cls)
Create a top-level activity entry.
void GNUNET_FS_remove_sync_dir_(struct GNUNET_FS_Handle *h, const char *ext, const char *uni)
Remove serialization/deserialization directory from disk.
void GNUNET_FS_unindex_process_hash_(void *cls, const struct GNUNET_HashCode *file_id)
Function called once the hash of the file that is being unindexed has been computed.
void GNUNET_FS_dequeue_(struct GNUNET_FS_QueueEntry *qe)
Dequeue a job from the queue.
void GNUNET_FS_publish_main_(void *cls)
Main function that performs the upload.
size_t GNUNET_FS_data_reader_file_(void *cls, uint64_t offset, size_t max, void *buf, char **emsg)
Function that provides data by reading from a file.
void GNUNET_FS_end_top(struct GNUNET_FS_Handle *h, struct TopLevelActivity *top)
Destroy a top-level activity entry.
void GNUNET_FS_publish_sync_(struct GNUNET_FS_PublishContext *pc)
Synchronize this publishing struct with its mirror on disk.
void GNUNET_FS_search_signal_suspend_(void *cls)
Create SUSPEND event for the given search operation and then clean up our state (without stop signal)...
static struct GNUNET_ARM_Handle * h
Connection with ARM.
static int start
Set if we are to start default services (including ARM).
static struct GNUNET_DATASTORE_QueueEntry * qe
Current operation.
static struct GNUNET_FS_DownloadContext * dc
static struct GNUNET_FS_PublishContext * pc
Handle to FS-publishing operation.
static struct GNUNET_FS_SearchContext * sc
static struct GNUNET_FS_UnindexContext * uc
static struct GNUNET_OS_Process * p
Helper process we started.
Library for data block manipulation.
API for file sharing via GNUnet.
GNUNET_FS_Flags
General (global) option flags for file-sharing.
GNUNET_FS_SearchOptions
Options for searching.
GNUNET_FS_DownloadOptions
Options for downloading.
size_t(* GNUNET_FS_DataReader)(void *cls, uint64_t offset, size_t max, void *buf, char **emsg)
Function that provides data.
GNUNET_FS_PublishOptions
Options for publishing.
void *(* GNUNET_FS_ProgressCallback)(void *cls, const struct GNUNET_FS_ProgressInfo *info)
Notification of FS to a client about the progress of an operation.
void(* GNUNET_SCHEDULER_TaskCallback)(void *cls)
Signature of the main function of a task.
Information about an active download request.
struct DownloadRequest ** children
Array (!) of child-requests, or NULL for the bottom of the tree.
unsigned int chk_idx
Offset of the CHK for this block in the parent block.
unsigned int num_children
Number of entries in children array.
uint64_t offset
Offset of the corresponding block.
enum BlockRequestState state
State in the FSM.
unsigned int depth
Depth of the corresponding block in the tree.
struct DownloadRequest * parent
Parent in the CHK-tree.
struct ContentHashKey chk
CHK for the request for this block (set during reconstruction to what we have on disk,...
complete information needed to download a file.
struct ContentHashKey chk
Query and key of the top GNUNET_EC_IBlock.
uint64_t file_length
Total size of the file in bytes.
Internal representation of the hash map.
Private ECC key encoded for transmission.
Public ECC key (always for Curve25519) encoded in a format suitable for network transmission and ECDS...
an ECC signature using EdDSA.
Context used when hashing a file.
Handle to the datastore service.
Entry in our priority queue.
Handle used to access files (and pipes).
Settings for publishing a block (which may of course also apply to an entire directory or file).
An opaque structure a pointer to which is returned to the caller to be used to control the scanner.
Context for controlling a download.
int has_finished
Flag set upon transitive completion (includes child downloads).
unsigned int treedepth
The depth of the file-tree.
char * filename
Where are we writing the data (name of the file, can be NULL!).
struct GNUNET_FS_Uri * uri
URI that identifies the file that we are downloading.
struct GNUNET_DISK_FileHandle * rfh
File handle for reading data from an existing file (to pass to tree encoder).
struct GNUNET_FS_MetaData * meta
Known meta-data for the file (can be NULL).
void * client_info
Context kept for the client.
uint64_t old_file_size
What was the size of the file on disk that we're downloading before we started? Used to detect if the...
int issue_requests
Are we ready to issue requests (reconstructions are finished)?
uint64_t completed
How many bytes have we already received within the specified range (DBlocks only).
uint64_t offset
What is the first offset that we're interested in?
struct GNUNET_FS_QueueEntry * job_queue
Our entry in the job queue.
char * emsg
Error message, NULL if we're doing OK.
struct GNUNET_SCHEDULER_Task * task
ID of a task that is using this struct and that must be cancelled when the download is being stopped ...
struct GNUNET_FS_TreeEncoder * te
Tree encoder used for the reconstruction.
struct GNUNET_FS_SearchResult * search
Associated search (used when downloading files based on search results), or NULL for none.
struct GNUNET_FS_DownloadContext * child_tail
Tail of list of child downloads.
struct GNUNET_FS_DownloadContext * prev
Previous download belonging to the same parent.
struct GNUNET_CONTAINER_MultiHashMap * active
Map of active requests (those waiting for a response).
struct GNUNET_FS_DownloadContext * child_head
Head of list of child downloads.
struct GNUNET_TIME_Relative reconnect_backoff
How long to wait before we try to reconnect to FS service?
uint64_t length
How many bytes starting from offset are desired? This is NOT the overall length of the file!
char * serialization
Random portion of filename we use for syncing state of this download.
struct GNUNET_MQ_Handle * mq
Connection to the FS service.
uint32_t anonymity
Desired level of anonymity.
char * temp_filename
Where are we writing the data temporarily (name of the file, can be NULL!); used if we do not have a ...
struct GNUNET_FS_DownloadContext * next
Next download belonging to the same parent.
struct GNUNET_FS_DownloadContext * parent
Parent download (used when downloading files in directories).
struct DownloadRequest * top_request
Top-level download request.
struct GNUNET_PeerIdentity target
Identity of the peer having the content, or all-zeros if we don't know of such a peer.
enum GNUNET_FS_DownloadOptions options
Options for the download.
struct GNUNET_FS_Handle * h
Global FS context.
struct GNUNET_TIME_Absolute start_time
Time download was started.
struct TopLevelActivity * top
Our top-level activity entry (if we are top-level, otherwise NULL).
Master context for most FS operations.
enum GNUNET_FS_Flags flags
General flags.
char * client_name
Name of our client.
struct GNUNET_SCHEDULER_Task * queue_job
Task that processes the jobs in the running and pending queues (and moves jobs around as needed).
struct TopLevelActivity * top_tail
Tail of DLL of top-level activities.
struct GNUNET_FS_QueueEntry * pending_head
Head of DLL of pending jobs.
unsigned int max_parallel_requests
Maximum number of parallel requests.
struct GNUNET_FS_QueueEntry * running_head
Head of DLL of running jobs.
unsigned int active_downloads
How many actual downloads do we have running right now?
void * upcb_cls
Closure for upcb.
struct GNUNET_SCHEDULER_Task * probe_ping_task
Task we use to report periodically to the application that certain search probes (from probes_head) a...
struct GNUNET_FS_SearchResult * probes_tail
Tail of active probes.
GNUNET_FS_ProgressCallback upcb
Function to call with updates on our progress.
struct GNUNET_TIME_Relative avg_block_latency
Average time we take for a single request to be satisfied.
struct TopLevelActivity * top_head
Head of DLL of top-level activities.
struct GNUNET_FS_QueueEntry * running_tail
Tail of DLL of running jobs.
unsigned int active_blocks
How many blocks do the active downloads have?
const struct GNUNET_CONFIGURATION_Handle * cfg
Configuration to use.
struct GNUNET_FS_SearchResult * probes_head
Head of active probes.
struct GNUNET_FS_QueueEntry * pending_tail
Tail of DLL of pending jobs.
unsigned int max_parallel_downloads
Maximum number of parallel downloads.
Argument given to the progress callback with information about what is going on.
Handle for controlling a publication process.
int skip_next_fi_callback
Flag set to GNUNET_YES if the next callback from GNUNET_FS_file_information_inspect should be skipped...
struct GNUNET_FS_PublishKskContext * ksk_pc
Context for KSK publishing operation that is part of this publishing operation (NULL if not active).
uint32_t reserve_entries
Overall number of entries to reserve for the publish operation.
enum GNUNET_FS_PublishOptions options
Options for publishing.
struct GNUNET_DATASTORE_Handle * dsh
Connection to the datastore service.
struct GNUNET_CRYPTO_FileHashContext * fhc
Non-null if we are currently hashing a file.
struct TopLevelActivity * top
Our top-level activity entry (if we are top-level, otherwise NULL).
struct GNUNET_FS_FileInformation * fi_pos
Current position in the file-tree for the upload.
char * nuid
ID for future updates, NULL if we have no namespace or no updates.
int any_done
Set to GNUNET_YES if we were able to publish any block.
int all_done
Set to GNUNET_YES if all processing has completed.
struct GNUNET_DATASTORE_QueueEntry * qre
Queue entry for reservation/unreservation.
struct GNUNET_FS_FileInformation * fi
File-structure that is being shared.
struct GNUNET_MQ_Handle * mq
Our own message queue for the FS service; only briefly used when we start to index a file,...
uint64_t reserve_space
Storage space to reserve for the operation.
char * nid
ID of the content in the namespace, NULL if we have no namespace.
struct GNUNET_FS_Handle * h
Handle to the global fs context.
struct GNUNET_CRYPTO_EcdsaPrivateKey * ns
Namespace that we are publishing in, NULL if we have no namespace.
struct GNUNET_SCHEDULER_Task * upload_task
ID of the task performing the upload.
int rid
Space reservation ID with datastore service for this upload.
struct GNUNET_FS_PublishSksContext * sks_pc
Context for SKS publishing operation that is part of this publishing operation (NULL if not active).
char * serialization
Filename used for serializing information about this operation (should be determined using 'mktemp').
Context for the KSK publication.
Context for the SKS publication.
unsigned int start_times
How often have we (re)started this download?
int active
GNUNET_YES if the job is active now.
GNUNET_SCHEDULER_TaskCallback start
Function to call when the job is started.
struct GNUNET_TIME_Relative run_time
Total amount of time the job has been running (except for the current run).
GNUNET_SCHEDULER_TaskCallback stop
Function to call when the job needs to stop (or is done / dequeued).
struct GNUNET_FS_QueueEntry * prev
This is a linked list.
struct GNUNET_TIME_Absolute queue_time
Time the job was originally queued.
void * cls
Closure for start and stop.
enum GNUNET_FS_QueuePriority priority
How important is this download?
struct GNUNET_TIME_Absolute start_time
Time the job was started last.
unsigned int blocks
How many blocks do the active downloads have?
struct GNUNET_MQ_Handle * mq
Message queue handle, or NULL if job is not running.
struct GNUNET_FS_Handle * h
Handle to FS primary context.
struct GNUNET_FS_QueueEntry * next
This is a linked list.
Handle for controlling a search.
struct GNUNET_CONTAINER_MultiHashMap * master_result_map
Map that contains a struct GNUNET_FS_SearchResult for each result that was found in the search.
char * emsg
Error message (non-NULL if this operation failed).
struct SearchRequestEntry * requests
Per-keyword information for a keyword search.
char * serialization
Name of the file on disk we use for persistence.
void * client_info
Pointer we keep for the client.
struct GNUNET_FS_SearchResult * psearch_result
For update-searches, link to the search result that triggered the update search; otherwise NULL.
struct GNUNET_SCHEDULER_Task * task
ID of a task that is using this struct and that must be cancelled when the search is being stopped (i...
struct GNUNET_TIME_Relative reconnect_backoff
How long to wait before we try to reconnect to FS service?
enum GNUNET_FS_SearchOptions options
Options for the search.
uint32_t anonymity
Anonymity level for the search.
struct TopLevelActivity * top
Our top-level activity entry (if we are top-level, otherwise NULL).
struct GNUNET_FS_Uri * uri
List of keywords that we're looking for.
uint32_t mandatory_count
Number of mandatory keywords in this query.
struct GNUNET_FS_Handle * h
Handle to the global FS context.
struct GNUNET_MQ_Handle * mq
Connection to the FS service.
struct GNUNET_TIME_Absolute start_time
When did we start?
Information we store for each search result.
uint32_t optional_support
Number of optional keywords under which this result was also found.
struct GNUNET_FS_DownloadContext * download
ID of an associated download based on this search result (or NULL for none).
struct GNUNET_FS_SearchContext * update_search
If this search result triggered an update search, this field links to the update search.
void * client_info
Client info for this search result.
struct GNUNET_FS_DownloadContext * probe_ctx
ID of a job that is currently probing this results' availability (NULL if we are not currently probin...
uint32_t availability_trials
Number of availability trials that we have performed for this search result.
struct GNUNET_FS_Uri * uri
URI to which this search result refers to.
uint8_t * keyword_bitmap
Bitmap that specifies precisely which keywords have been matched already.
struct GNUNET_FS_Handle * h
File-sharing context this result belongs to.
struct GNUNET_HashCode key
Key for the search result based on the URI.
char * serialization
Name under which this search result is stored on disk.
uint32_t anonymity
Anonymity level to use for probes using this search result.
uint32_t availability_success
Number of availability tests that have succeeded for this result.
struct GNUNET_FS_MetaData * meta
Metadata for the search result.
struct GNUNET_FS_SearchContext * sc
Search context this result belongs to; can be NULL for probes that come from a directory result.
struct GNUNET_FS_SearchResult * prev
Kept in a DLL while probing.
struct GNUNET_FS_SearchResult * next
Kept in a DLL while probing.
struct GNUNET_TIME_Absolute probe_active_time
When did the current probe become active?
struct GNUNET_TIME_Relative remaining_probe_time
How much longer should we run the current probe before giving up?
uint32_t mandatory_missing
Number of mandatory keywords for which we have NOT yet found the search result; when this value hits ...
struct GNUNET_SCHEDULER_Task * probe_cancel_task
ID of the task that will clean up the probe_ctx should it not complete on time (and that will need to...
Context for an ECRS-based file encoder that computes the Merkle-ish-CHK tree.
Handle for controlling an unindexing operation.
struct GNUNET_FS_TreeEncoder * tc
Merkle-ish tree encoder context.
struct GNUNET_FS_DirScanner * dscan
Directory scanner to find keywords (KBlock removal).
enum UnindexState state
Current operatinonal phase.
void * client_info
Pointer kept for the client.
char * emsg
Error message, NULL on success.
struct GNUNET_DISK_FileHandle * fh
Handle used to read the file.
struct GNUNET_TIME_Absolute start_time
When did we start?
struct ContentHashKey chk
The content hash key of the last block we processed, will in the end be set to the CHK from the URI.
struct GNUNET_DATASTORE_QueueEntry * dqe
Handle to datastore 'get_key' operation issued for obtaining KBlocks.
struct GNUNET_CRYPTO_FileHashContext * fhc
Context for hashing of the file.
struct TopLevelActivity * top
Our top-level activity entry.
char * filename
Name of the file that we are unindexing.
struct GNUNET_DATASTORE_Handle * dsh
Connection to the datastore service, only valid during the UNINDEX_STATE_DS_NOTIFY phase.
struct GNUNET_FS_Handle * h
Global FS context.
uint32_t ksk_offset
Current offset in KSK removal.
char * serialization
Short name under which we are serializing the state of this operation.
struct GNUNET_HashCode uquery
Current query of 'get_key' operation.
struct GNUNET_HashCode ukey
Current key for decrypting UBLocks from 'get_key' operation.
struct GNUNET_FS_Uri * ksk_uri
Keywords found (telling us which KBlocks to remove).
struct GNUNET_HashCode file_id
Hash of the file's contents (once computed).
uint64_t file_size
Overall size of the file.
struct GNUNET_MQ_Handle * mq
Connection to the FS service, only valid during the UNINDEX_STATE_FS_NOTIFY phase.
A Universal Resource Identifier (URI), opaque.
char ** keywords
Keywords start with a '+' if they are mandatory (in which case the '+' is NOT part of the keyword) an...
union GNUNET_FS_Uri::@49 data
struct GNUNET_FS_Uri::@49::@51 sks
enum GNUNET_FS_UriType type
Type of the URI.
struct GNUNET_FS_Uri::@49::@50 ksk
struct GNUNET_CRYPTO_EcdsaPublicKey ns
Identifier of the namespace.
struct Location loc
Information needed to retrieve a file including signed location (identity of a peer) of the content.
unsigned int keywordCount
Size of the keywords array.
char * identifier
Human-readable identifier chosen for this entry in the namespace.
struct FileIdentifier chk
Information needed to retrieve a file (content-hash-key plus file size).
Handle to a message queue.
The identity of the host (wraps the signing key of the peer).
Entry in list of pending tasks.
Time for absolute times used by GNUnet, in microseconds.
Time for relative time used by GNUnet, in microseconds.
Information about a file and its location (peer claiming to share the file).
struct GNUNET_TIME_Absolute expirationTime
Time when this location URI expires.
struct GNUNET_CRYPTO_EddsaSignature contentSignature
Signature over the GNUNET_EC_FileIdentifier, peer identity and expiration time.
struct FileIdentifier fi
Information about the shared file.
struct GNUNET_PeerIdentity peer
Identity of the peer sharing the file.
Information we keep for each keyword in a keyword search.
int mandatory
Is this keyword a mandatory keyword (started with '+')?
struct GNUNET_CONTAINER_MultiHashMap * results
Map that contains a "struct GNUNET_FS_SearchResult" for each result that was found under this keyword...
struct GNUNET_CRYPTO_EcdsaPublicKey dpub
Derived public key, hashes to 'uquery'.
char * keyword
The original keyword, used to derive the key (for decrypting the UBlock).
struct GNUNET_HashCode uquery
Hash of the public key, also known as the query.
We track all of the top-level activities of FS so that we can signal 'suspend' on shutdown.
void * ssf_cls
Closure for 'ssf' (some struct GNUNET_FS_XXXHandle*)
SuspendSignalFunction ssf
Function to call for suspend-signalling and clean up.
struct TopLevelActivity * prev
This is a doubly-linked list.
struct TopLevelActivity * next
This is a doubly-linked list.