aboutsummaryrefslogtreecommitdiff
path: root/src/namecache/gnunet-service-namecache.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/namecache/gnunet-service-namecache.c')
-rw-r--r--src/namecache/gnunet-service-namecache.c47
1 files changed, 11 insertions, 36 deletions
diff --git a/src/namecache/gnunet-service-namecache.c b/src/namecache/gnunet-service-namecache.c
index 7cf216ce3..07bf30de9 100644
--- a/src/namecache/gnunet-service-namecache.c
+++ b/src/namecache/gnunet-service-namecache.c
@@ -184,40 +184,24 @@ handle_lookup_block_it (void *cls,
184 struct LookupBlockContext *lnc = cls; 184 struct LookupBlockContext *lnc = cls;
185 struct GNUNET_MQ_Envelope *env; 185 struct GNUNET_MQ_Envelope *env;
186 struct LookupBlockResponseMessage *r; 186 struct LookupBlockResponseMessage *r;
187 size_t esize;
188 size_t bsize; 187 size_t bsize;
189 188
190 bsize = ntohl (block->purpose.size); 189 bsize = GNUNET_GNSRECORD_block_get_size (block);
191 if (bsize <
192 (sizeof(struct GNUNET_CRYPTO_EccSignaturePurpose) + sizeof(struct
193 GNUNET_TIME_AbsoluteNBO)))
194 {
195 GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
196 "Malformed block.");
197 lnc->status = GNUNET_SYSERR;
198 return;
199 }
200 esize = ntohl (block->purpose.size)
201 - sizeof(struct GNUNET_CRYPTO_EccSignaturePurpose)
202 - sizeof(struct GNUNET_TIME_AbsoluteNBO);
203 env = GNUNET_MQ_msg_extra (r, 190 env = GNUNET_MQ_msg_extra (r,
204 esize, 191 bsize,
205 GNUNET_MESSAGE_TYPE_NAMECACHE_LOOKUP_BLOCK_RESPONSE); 192 GNUNET_MESSAGE_TYPE_NAMECACHE_LOOKUP_BLOCK_RESPONSE);
206 r->gns_header.r_id = htonl (lnc->request_id); 193 r->gns_header.r_id = htonl (lnc->request_id);
207 r->expire = block->expiration_time;
208 r->signature = block->signature;
209 r->derived_key = block->derived_key;
210 GNUNET_memcpy (&r[1], 194 GNUNET_memcpy (&r[1],
211 &block[1], 195 block,
212 esize); 196 bsize);
213 GNUNET_STATISTICS_update (statistics, 197 GNUNET_STATISTICS_update (statistics,
214 "blocks found in cache", 198 "blocks found in cache",
215 1, 199 1,
216 GNUNET_NO); 200 GNUNET_NO);
201 r->expire = GNUNET_TIME_absolute_hton (
202 GNUNET_GNSRECORD_block_get_expiration (block));
217 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 203 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
218 "Sending NAMECACHE_LOOKUP_BLOCK_RESPONSE message with expiration time %s\n", 204 "Sending NAMECACHE_LOOKUP_BLOCK_RESPONSE message\n");
219 GNUNET_STRINGS_absolute_time_to_string (
220 GNUNET_TIME_absolute_ntoh (r->expire)));
221 GNUNET_MQ_send (lnc->nc->mq, 205 GNUNET_MQ_send (lnc->nc->mq,
222 env); 206 env);
223} 207}
@@ -314,20 +298,11 @@ handle_block_cache (void *cls,
314 GNUNET_NO); 298 GNUNET_NO);
315 esize = ntohs (rp_msg->gns_header.header.size) - sizeof(struct 299 esize = ntohs (rp_msg->gns_header.header.size) - sizeof(struct
316 BlockCacheMessage); 300 BlockCacheMessage);
317 block = GNUNET_malloc (sizeof(struct GNUNET_GNSRECORD_Block) + esize); 301 block = GNUNET_malloc (esize);
318 block->signature = rp_msg->signature; 302 memcpy (block, &rp_msg[1], esize);
319 block->derived_key = rp_msg->derived_key;
320 block->purpose.size = htonl (sizeof(struct GNUNET_CRYPTO_EccSignaturePurpose)
321 + sizeof(struct GNUNET_TIME_AbsoluteNBO)
322 + esize);
323 block->expiration_time = rp_msg->expire;
324 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 303 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
325 "Received NAMECACHE_BLOCK_CACHE message with expiration time %s\n", 304 "Received NAMECACHE_BLOCK_CACHE message with type %u\n",
326 GNUNET_STRINGS_absolute_time_to_string ( 305 htonl (block->type));
327 GNUNET_TIME_absolute_ntoh (block->expiration_time)));
328 GNUNET_memcpy (&block[1],
329 &rp_msg[1],
330 esize);
331 res = GSN_database->cache_block (GSN_database->cls, 306 res = GSN_database->cache_block (GSN_database->cls,
332 block); 307 block);
333 GNUNET_free (block); 308 GNUNET_free (block);