diff options
Diffstat (limited to 'src/block')
-rw-r--r-- | src/block/plugin_block_fs.c | 54 |
1 files changed, 30 insertions, 24 deletions
diff --git a/src/block/plugin_block_fs.c b/src/block/plugin_block_fs.c index f9bf4e36e..28a56526b 100644 --- a/src/block/plugin_block_fs.c +++ b/src/block/plugin_block_fs.c | |||
@@ -90,18 +90,21 @@ block_plugin_fs_evaluate (void *cls, enum GNUNET_BLOCK_Type type, | |||
90 | } | 90 | } |
91 | if (reply_block == NULL) | 91 | if (reply_block == NULL) |
92 | return GNUNET_BLOCK_EVALUATION_REQUEST_VALID; | 92 | return GNUNET_BLOCK_EVALUATION_REQUEST_VALID; |
93 | GNUNET_CRYPTO_hash (reply_block, reply_block_size, &chash); | 93 | if (NULL != bf) |
94 | GNUNET_BLOCK_mingle_hash (&chash, bf_mutator, &mhash); | 94 | { |
95 | if (NULL != *bf) | 95 | GNUNET_CRYPTO_hash (reply_block, reply_block_size, &chash); |
96 | { | 96 | GNUNET_BLOCK_mingle_hash (&chash, bf_mutator, &mhash); |
97 | if (GNUNET_YES == GNUNET_CONTAINER_bloomfilter_test (*bf, &mhash)) | 97 | if (NULL != *bf) |
98 | return GNUNET_BLOCK_EVALUATION_OK_DUPLICATE; | 98 | { |
99 | } | 99 | if (GNUNET_YES == GNUNET_CONTAINER_bloomfilter_test (*bf, &mhash)) |
100 | else | 100 | return GNUNET_BLOCK_EVALUATION_OK_DUPLICATE; |
101 | { | 101 | } |
102 | *bf = GNUNET_CONTAINER_bloomfilter_init (NULL, 8, BLOOMFILTER_K); | 102 | else |
103 | } | 103 | { |
104 | GNUNET_CONTAINER_bloomfilter_add (*bf, &mhash); | 104 | *bf = GNUNET_CONTAINER_bloomfilter_init (NULL, 8, BLOOMFILTER_K); |
105 | } | ||
106 | GNUNET_CONTAINER_bloomfilter_add (*bf, &mhash); | ||
107 | } | ||
105 | return GNUNET_BLOCK_EVALUATION_OK_MORE; | 108 | return GNUNET_BLOCK_EVALUATION_OK_MORE; |
106 | case GNUNET_BLOCK_TYPE_FS_SBLOCK: | 109 | case GNUNET_BLOCK_TYPE_FS_SBLOCK: |
107 | if (xquery_size != sizeof (GNUNET_HashCode)) | 110 | if (xquery_size != sizeof (GNUNET_HashCode)) |
@@ -128,18 +131,21 @@ block_plugin_fs_evaluate (void *cls, enum GNUNET_BLOCK_Type type, | |||
128 | ("Reply mismatched in terms of namespace. Discarded.\n")); | 131 | ("Reply mismatched in terms of namespace. Discarded.\n")); |
129 | return GNUNET_BLOCK_EVALUATION_RESULT_INVALID; | 132 | return GNUNET_BLOCK_EVALUATION_RESULT_INVALID; |
130 | } | 133 | } |
131 | GNUNET_CRYPTO_hash (reply_block, reply_block_size, &chash); | 134 | if (NULL != bf) |
132 | GNUNET_BLOCK_mingle_hash (&chash, bf_mutator, &mhash); | 135 | { |
133 | if (NULL != *bf) | 136 | GNUNET_CRYPTO_hash (reply_block, reply_block_size, &chash); |
134 | { | 137 | GNUNET_BLOCK_mingle_hash (&chash, bf_mutator, &mhash); |
135 | if (GNUNET_YES == GNUNET_CONTAINER_bloomfilter_test (*bf, &mhash)) | 138 | if (NULL != *bf) |
136 | return GNUNET_BLOCK_EVALUATION_OK_DUPLICATE; | 139 | { |
137 | } | 140 | if (GNUNET_YES == GNUNET_CONTAINER_bloomfilter_test (*bf, &mhash)) |
138 | else | 141 | return GNUNET_BLOCK_EVALUATION_OK_DUPLICATE; |
139 | { | 142 | } |
140 | *bf = GNUNET_CONTAINER_bloomfilter_init (NULL, 8, BLOOMFILTER_K); | 143 | else |
141 | } | 144 | { |
142 | GNUNET_CONTAINER_bloomfilter_add (*bf, &mhash); | 145 | *bf = GNUNET_CONTAINER_bloomfilter_init (NULL, 8, BLOOMFILTER_K); |
146 | } | ||
147 | GNUNET_CONTAINER_bloomfilter_add (*bf, &mhash); | ||
148 | } | ||
143 | return GNUNET_BLOCK_EVALUATION_OK_MORE; | 149 | return GNUNET_BLOCK_EVALUATION_OK_MORE; |
144 | default: | 150 | default: |
145 | return GNUNET_BLOCK_EVALUATION_TYPE_NOT_SUPPORTED; | 151 | return GNUNET_BLOCK_EVALUATION_TYPE_NOT_SUPPORTED; |