diff options
author | TheJackiMonster <thejackimonster@gmail.com> | 2022-04-05 22:46:38 +0200 |
---|---|---|
committer | TheJackiMonster <thejackimonster@gmail.com> | 2022-04-05 22:46:38 +0200 |
commit | d887cda509e0001adcdeb74feca80a71416827b7 (patch) | |
tree | 53db0f282a84278931adcabced78e281c664fcd1 /src/messenger/gnunet-service-messenger_ego_store.c | |
parent | 2ea635b60d3fcc4a242089084441ea8e2747c3d4 (diff) | |
download | gnunet-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.c | 72 |
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 | ||
288 | struct GNUNET_MESSENGER_Ego* | 298 | struct 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 | ||
339 | static void | 351 | static 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 | |||
400 | static void | 417 | static void |
401 | callback_ego_delete (void *cls, | 418 | callback_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 | } |