aboutsummaryrefslogtreecommitdiff
path: root/src/messenger/gnunet-service-messenger_ego_store.c
diff options
context:
space:
mode:
authorTheJackiMonster <thejackimonster@gmail.com>2022-04-05 22:46:38 +0200
committerTheJackiMonster <thejackimonster@gmail.com>2022-04-05 22:46:38 +0200
commitd887cda509e0001adcdeb74feca80a71416827b7 (patch)
tree53db0f282a84278931adcabced78e281c664fcd1 /src/messenger/gnunet-service-messenger_ego_store.c
parent2ea635b60d3fcc4a242089084441ea8e2747c3d4 (diff)
downloadgnunet-d887cda509e0001adcdeb74feca80a71416827b7.tar.gz
gnunet-d887cda509e0001adcdeb74feca80a71416827b7.zip
-fix messenger renaming
Signed-off-by: TheJackiMonster <thejackimonster@gmail.com>
Diffstat (limited to 'src/messenger/gnunet-service-messenger_ego_store.c')
-rw-r--r--src/messenger/gnunet-service-messenger_ego_store.c72
1 files changed, 47 insertions, 25 deletions
diff --git a/src/messenger/gnunet-service-messenger_ego_store.c b/src/messenger/gnunet-service-messenger_ego_store.c
index bcc301e95..8f40a924b 100644
--- a/src/messenger/gnunet-service-messenger_ego_store.c
+++ b/src/messenger/gnunet-service-messenger_ego_store.c
@@ -181,8 +181,14 @@ create_store_ego (struct GNUNET_MESSENGER_EgoStore *store,
181 181
182 element->identifier = GNUNET_strdup (identifier); 182 element->identifier = GNUNET_strdup (identifier);
183 183
184 element->operation = GNUNET_IDENTITY_create (store->identity, identifier, NULL, 184 element->operation = GNUNET_IDENTITY_create (
185 GNUNET_IDENTITY_TYPE_ECDSA, callback_ego_create, element); 185 store->identity,
186 identifier,
187 NULL,
188 GNUNET_IDENTITY_TYPE_ECDSA,
189 callback_ego_create,
190 element
191 );
186 192
187 GNUNET_CONTAINER_DLL_insert (store->op_start, store->op_end, element); 193 GNUNET_CONTAINER_DLL_insert (store->op_start, store->op_end, element);
188} 194}
@@ -228,14 +234,28 @@ callback_ego_lookup (void *cls,
228 234
229 GNUNET_assert (element->identifier); 235 GNUNET_assert (element->identifier);
230 236
231 struct GNUNET_MESSENGER_Ego *msg_ego; 237 struct GNUNET_MESSENGER_Ego *msg_ego = NULL;
232 238
233 if (ego) 239 if (ego)
240 {
241 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "New ego looked up: '%s'\n", element->identifier);
234 msg_ego = update_store_ego ( 242 msg_ego = update_store_ego (
235 store, element->identifier, GNUNET_IDENTITY_ego_get_private_key(ego) 243 store,
244 element->identifier,
245 GNUNET_IDENTITY_ego_get_private_key(ego)
236 ); 246 );
247 }
237 else 248 else
238 msg_ego = NULL; 249 {
250 struct GNUNET_HashCode hash;
251 GNUNET_CRYPTO_hash (element->identifier, strlen (element->identifier), &hash);
252
253 if (GNUNET_CONTAINER_multihashmap_get (store->egos, &hash))
254 {
255 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Looked up ego got deleted: '%s'\n", element->identifier);
256 delete_store_ego(store, element->identifier);
257 }
258 }
239 259
240 if (element->cb) 260 if (element->cb)
241 element->cb(element->cls, element->identifier, msg_ego); 261 element->cb(element->cls, element->identifier, msg_ego);
@@ -261,28 +281,18 @@ lookup_store_ego(struct GNUNET_MESSENGER_EgoStore *store,
261 return; 281 return;
262 } 282 }
263 283
264 struct GNUNET_HashCode hash; 284 struct GNUNET_MESSENGER_EgoLookup *element = GNUNET_new (struct GNUNET_MESSENGER_EgoLookup);
265 GNUNET_CRYPTO_hash (identifier, strlen (identifier), &hash);
266
267 struct GNUNET_MESSENGER_Ego *ego = GNUNET_CONTAINER_multihashmap_get (store->egos, &hash);
268 285
269 if (ego) 286 element->store = store;
270 lookup(cls, identifier, ego);
271 else
272 {
273 struct GNUNET_MESSENGER_EgoLookup *element = GNUNET_new (struct GNUNET_MESSENGER_EgoLookup);
274
275 element->store = store;
276 287
277 element->cb = lookup; 288 element->cb = lookup;
278 element->cls = cls; 289 element->cls = cls;
279 290
280 element->identifier = GNUNET_strdup (identifier); 291 element->identifier = GNUNET_strdup (identifier);
281 292
282 element->lookup = GNUNET_IDENTITY_ego_lookup(store->cfg, identifier, callback_ego_lookup, element); 293 element->lookup = GNUNET_IDENTITY_ego_lookup(store->cfg, identifier, callback_ego_lookup, element);
283 294
284 GNUNET_CONTAINER_DLL_insert (store->lu_start, store->lu_end, element); 295 GNUNET_CONTAINER_DLL_insert (store->lu_start, store->lu_end, element);
285 }
286} 296}
287 297
288struct GNUNET_MESSENGER_Ego* 298struct GNUNET_MESSENGER_Ego*
@@ -334,6 +344,8 @@ delete_store_ego (struct GNUNET_MESSENGER_EgoStore *store,
334 344
335 GNUNET_CONTAINER_multihashmap_remove (store->egos, &hash, ego); 345 GNUNET_CONTAINER_multihashmap_remove (store->egos, &hash, ego);
336 GNUNET_free(ego); 346 GNUNET_free(ego);
347
348
337} 349}
338 350
339static void 351static void
@@ -391,12 +403,17 @@ rename_store_ego (struct GNUNET_MESSENGER_EgoStore *store,
391 403
392 element->identifier = GNUNET_strdup (old_identifier); 404 element->identifier = GNUNET_strdup (old_identifier);
393 405
394 element->operation = GNUNET_IDENTITY_rename (store->identity, old_identifier, new_identifier, callback_ego_rename, element); 406 element->operation = GNUNET_IDENTITY_rename (
407 store->identity,
408 old_identifier,
409 new_identifier,
410 callback_ego_rename,
411 element
412 );
395 413
396 GNUNET_CONTAINER_DLL_insert (store->op_start, store->op_end, element); 414 GNUNET_CONTAINER_DLL_insert (store->op_start, store->op_end, element);
397} 415}
398 416
399
400static void 417static void
401callback_ego_delete (void *cls, 418callback_ego_delete (void *cls,
402 const char *emsg) 419 const char *emsg)
@@ -431,7 +448,12 @@ renew_store_ego (struct GNUNET_MESSENGER_EgoStore *store,
431 448
432 element->identifier = GNUNET_strdup (identifier); 449 element->identifier = GNUNET_strdup (identifier);
433 450
434 element->operation = GNUNET_IDENTITY_delete(store->identity, identifier, callback_ego_delete, element); 451 element->operation = GNUNET_IDENTITY_delete(
452 store->identity,
453 identifier,
454 callback_ego_delete,
455 element
456 );
435 457
436 GNUNET_CONTAINER_DLL_insert (store->op_start, store->op_end, element); 458 GNUNET_CONTAINER_DLL_insert (store->op_start, store->op_end, element);
437} 459}