X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fdatacache%2Fplugin_datacache_heap.c;h=85cf9487ef801eb81f6fbbf171c9456f9232e1d0;hb=fdbe690beeec04066f18302401096eb5212c3f6a;hp=8bc9b29f65964a510e3beee741bdbd3cece8f07a;hpb=4e1d85bac66209e6655f3fb4d3ddef7929f0f3fc;p=oweals%2Fgnunet.git diff --git a/src/datacache/plugin_datacache_heap.c b/src/datacache/plugin_datacache_heap.c index 8bc9b29f6..85cf9487e 100644 --- a/src/datacache/plugin_datacache_heap.c +++ b/src/datacache/plugin_datacache_heap.c @@ -95,7 +95,7 @@ struct Value * Type of the block. */ enum GNUNET_BLOCK_Type type; - + }; @@ -110,7 +110,7 @@ struct PutContext /** * Expiration time for the new value. */ - struct GNUNET_TIME_Absolute discard_time; + struct GNUNET_TIME_Absolute discard_time; /** * Data for the new value. @@ -155,8 +155,8 @@ struct PutContext * * @param cls the 'struct PutContext' * @param key the key for the value(s) - * @param value an existing value - * @return GNUNET_YES if not found (to continue to iterate) + * @param value an existing value + * @return #GNUNET_YES if not found (to continue to iterate) */ static int put_cb (void *cls, @@ -170,28 +170,27 @@ put_cb (void *cls, (val->type == put_ctx->type) && (0 == memcmp (&val[1], put_ctx->data, put_ctx->size)) ) { - put_ctx->found = GNUNET_YES; + put_ctx->found = GNUNET_YES; val->discard_time = GNUNET_TIME_absolute_max (val->discard_time, put_ctx->discard_time); /* replace old path with new path */ GNUNET_array_grow (val->path_info, val->path_info_len, put_ctx->path_info_len); - memcpy (val->path_info, + memcpy (val->path_info, put_ctx->path_info, - put_ctx->path_info_len * sizeof (struct GNUNET_PeerIdentity)); + put_ctx->path_info_len * sizeof (struct GNUNET_PeerIdentity)); GNUNET_CONTAINER_heap_update_cost (put_ctx->heap, val->hn, - val->discard_time.abs_value); - return GNUNET_NO; - } - if (val->type == put_ctx->type) + val->discard_time.abs_value_us); GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, - "Got another value for key %s and type %d (size %u vs %u)\n", + "Got same value for key %s and type %d (size %u vs %u)\n", GNUNET_h2s (key), val->type, (unsigned int) val->size, (unsigned int) put_ctx->size); + return GNUNET_NO; + } return GNUNET_YES; } @@ -199,13 +198,13 @@ put_cb (void *cls, /** * Store an item in the datastore. * - * @param cls closure (our "struct Plugin") + * @param cls closure (our `struct Plugin`) * @param key key to store data under * @param size number of bytes in data * @param data data to store * @param type type of the value * @param discard_time when to discard the value in any case - * @param path_info_len number of entries in 'path_info' + * @param path_info_len number of entries in @a path_info * @param path_info a path through the network * @return 0 if duplicate, -1 on error, number of bytes used otherwise */ @@ -251,7 +250,7 @@ heap_plugin_put (void *cls, const struct GNUNET_HashCode * key, size_t size, GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE); val->hn = GNUNET_CONTAINER_heap_insert (plugin->heap, val, - val->discard_time.abs_value); + val->discard_time.abs_value_us); return size + OVERHEAD; } @@ -290,7 +289,7 @@ struct GetContext * * @param cls the 'struct GetContext' * @param key the key for the value(s) - * @param value an existing value + * @param value an existing value * @return GNUNET_YES to continue to iterate */ static int @@ -342,7 +341,7 @@ heap_plugin_get (void *cls, const struct GNUNET_HashCode * key, get_ctx.type = type; get_ctx.iter = iter; - get_ctx.iter_cls = iter_cls; + get_ctx.iter_cls = iter_cls; get_ctx.cnt = 0; GNUNET_CONTAINER_multihashmap_get_multiple (plugin->map, key, @@ -357,14 +356,14 @@ heap_plugin_get (void *cls, const struct GNUNET_HashCode * key, * from the datacache right now. * * @param cls closure (our "struct Plugin") - * @return GNUNET_OK on success, GNUNET_SYSERR on error + * @return #GNUNET_OK on success, #GNUNET_SYSERR on error */ static int heap_plugin_del (void *cls) { struct Plugin *plugin = cls; struct Value *val; - + val = GNUNET_CONTAINER_heap_remove_root (plugin->heap); if (NULL == val) return GNUNET_SYSERR; @@ -384,8 +383,8 @@ heap_plugin_del (void *cls) /** * Entry point for the plugin. * - * @param cls closure (the "struct GNUNET_DATACACHE_PluginEnvironmnet") - * @return the plugin's closure (our "struct Plugin") + * @param cls closure (the `struct GNUNET_DATACACHE_PluginEnvironmnet`) + * @return the plugin's closure (our `struct Plugin`) */ void * libgnunet_plugin_datacache_heap_init (void *cls) @@ -428,6 +427,7 @@ libgnunet_plugin_datacache_heap_done (void *cls) GNUNET_CONTAINER_multihashmap_remove (plugin->map, &val->key, val)); + GNUNET_free_non_null (val->path_info); GNUNET_free (val); } GNUNET_CONTAINER_heap_destroy (plugin->heap);