diff options
Diffstat (limited to 'src/identity/gnunet-service-identity.c')
-rw-r--r-- | src/identity/gnunet-service-identity.c | 102 |
1 files changed, 65 insertions, 37 deletions
diff --git a/src/identity/gnunet-service-identity.c b/src/identity/gnunet-service-identity.c index 42ad94df1..bdacf3ba0 100644 --- a/src/identity/gnunet-service-identity.c +++ b/src/identity/gnunet-service-identity.c | |||
@@ -140,7 +140,9 @@ client_disconnect_cb (void *cls, | |||
140 | struct GNUNET_SERVICE_Client *client, | 140 | struct GNUNET_SERVICE_Client *client, |
141 | void *app_ctx) | 141 | void *app_ctx) |
142 | { | 142 | { |
143 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Client %p disconnected\n", client); | 143 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
144 | "Client %p disconnected\n", | ||
145 | client); | ||
144 | } | 146 | } |
145 | 147 | ||
146 | 148 | ||
@@ -189,7 +191,9 @@ shutdown_task (void *cls) | |||
189 | ego_directory = NULL; | 191 | ego_directory = NULL; |
190 | while (NULL != (e = ego_head)) | 192 | while (NULL != (e = ego_head)) |
191 | { | 193 | { |
192 | GNUNET_CONTAINER_DLL_remove (ego_head, ego_tail, e); | 194 | GNUNET_CONTAINER_DLL_remove (ego_head, |
195 | ego_tail, | ||
196 | e); | ||
193 | GNUNET_free (e->identifier); | 197 | GNUNET_free (e->identifier); |
194 | GNUNET_free (e); | 198 | GNUNET_free (e); |
195 | } | 199 | } |
@@ -260,7 +264,8 @@ create_update_message (struct Ego *ego) | |||
260 | * @return corresponding set default message | 264 | * @return corresponding set default message |
261 | */ | 265 | */ |
262 | static struct GNUNET_MQ_Envelope * | 266 | static struct GNUNET_MQ_Envelope * |
263 | create_set_default_message (struct Ego *ego, const char *servicename) | 267 | create_set_default_message (struct Ego *ego, |
268 | const char *servicename) | ||
264 | { | 269 | { |
265 | struct SetDefaultMessage *sdm; | 270 | struct SetDefaultMessage *sdm; |
266 | struct GNUNET_MQ_Envelope *env; | 271 | struct GNUNET_MQ_Envelope *env; |
@@ -288,26 +293,34 @@ create_set_default_message (struct Ego *ego, const char *servicename) | |||
288 | * @param message the message received | 293 | * @param message the message received |
289 | */ | 294 | */ |
290 | static void | 295 | static void |
291 | handle_start_message (void *cls, const struct GNUNET_MessageHeader *message) | 296 | handle_start_message (void *cls, |
297 | const struct GNUNET_MessageHeader *message) | ||
292 | { | 298 | { |
293 | struct GNUNET_SERVICE_Client *client = cls; | 299 | struct GNUNET_SERVICE_Client *client = cls; |
294 | struct UpdateMessage *ume; | ||
295 | struct GNUNET_MQ_Envelope *env; | ||
296 | struct Ego *ego; | ||
297 | 300 | ||
298 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Received START message from client\n"); | 301 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
302 | "Received START message from client\n"); | ||
299 | GNUNET_SERVICE_client_mark_monitor (client); | 303 | GNUNET_SERVICE_client_mark_monitor (client); |
300 | GNUNET_SERVICE_client_disable_continue_warning (client); | 304 | GNUNET_SERVICE_client_disable_continue_warning (client); |
301 | GNUNET_notification_context_add (nc, GNUNET_SERVICE_client_get_mq (client)); | 305 | GNUNET_notification_context_add (nc, |
302 | for (ego = ego_head; NULL != ego; ego = ego->next) | 306 | GNUNET_SERVICE_client_get_mq (client)); |
307 | for (struct Ego *ego = ego_head; NULL != ego; ego = ego->next) | ||
303 | { | 308 | { |
304 | env = create_update_message (ego); | 309 | GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (client), |
305 | GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (client), env); | 310 | create_update_message (ego)); |
311 | } | ||
312 | { | ||
313 | struct UpdateMessage *ume; | ||
314 | struct GNUNET_MQ_Envelope *env; | ||
315 | |||
316 | env = GNUNET_MQ_msg_extra (ume, | ||
317 | 0, | ||
318 | GNUNET_MESSAGE_TYPE_IDENTITY_UPDATE); | ||
319 | ume->end_of_list = htons (GNUNET_YES); | ||
320 | ume->name_len = htons (0); | ||
321 | GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (client), | ||
322 | env); | ||
306 | } | 323 | } |
307 | env = GNUNET_MQ_msg_extra (ume, 0, GNUNET_MESSAGE_TYPE_IDENTITY_UPDATE); | ||
308 | ume->end_of_list = htons (GNUNET_YES); | ||
309 | ume->name_len = htons (0); | ||
310 | GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (client), env); | ||
311 | GNUNET_SERVICE_client_continue (client); | 324 | GNUNET_SERVICE_client_continue (client); |
312 | } | 325 | } |
313 | 326 | ||
@@ -321,7 +334,8 @@ handle_start_message (void *cls, const struct GNUNET_MessageHeader *message) | |||
321 | * @return #GNUNET_SYSERR if message was ill-formed | 334 | * @return #GNUNET_SYSERR if message was ill-formed |
322 | */ | 335 | */ |
323 | static int | 336 | static int |
324 | check_lookup_message (void *cls, const struct LookupMessage *message) | 337 | check_lookup_message (void *cls, |
338 | const struct LookupMessage *message) | ||
325 | { | 339 | { |
326 | GNUNET_MQ_check_zero_termination (message); | 340 | GNUNET_MQ_check_zero_termination (message); |
327 | return GNUNET_OK; | 341 | return GNUNET_OK; |
@@ -336,14 +350,16 @@ check_lookup_message (void *cls, const struct LookupMessage *message) | |||
336 | * @param message the message received | 350 | * @param message the message received |
337 | */ | 351 | */ |
338 | static void | 352 | static void |
339 | handle_lookup_message (void *cls, const struct LookupMessage *message) | 353 | handle_lookup_message (void *cls, |
354 | const struct LookupMessage *message) | ||
340 | { | 355 | { |
341 | struct GNUNET_SERVICE_Client *client = cls; | 356 | struct GNUNET_SERVICE_Client *client = cls; |
342 | const char *name; | 357 | const char *name; |
343 | struct GNUNET_MQ_Envelope *env; | 358 | struct GNUNET_MQ_Envelope *env; |
344 | struct Ego *ego; | 359 | struct Ego *ego; |
345 | 360 | ||
346 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Received LOOKUP message from client\n"); | 361 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
362 | "Received LOOKUP message from client\n"); | ||
347 | name = (const char *) &message[1]; | 363 | name = (const char *) &message[1]; |
348 | for (ego = ego_head; NULL != ego; ego = ego->next) | 364 | for (ego = ego_head; NULL != ego; ego = ego->next) |
349 | { | 365 | { |
@@ -368,7 +384,8 @@ handle_lookup_message (void *cls, const struct LookupMessage *message) | |||
368 | * @return #GNUNET_SYSERR if message was ill-formed | 384 | * @return #GNUNET_SYSERR if message was ill-formed |
369 | */ | 385 | */ |
370 | static int | 386 | static int |
371 | check_lookup_by_suffix_message (void *cls, const struct LookupMessage *message) | 387 | check_lookup_by_suffix_message (void *cls, |
388 | const struct LookupMessage *message) | ||
372 | { | 389 | { |
373 | GNUNET_MQ_check_zero_termination (message); | 390 | GNUNET_MQ_check_zero_termination (message); |
374 | return GNUNET_OK; | 391 | return GNUNET_OK; |
@@ -383,7 +400,8 @@ check_lookup_by_suffix_message (void *cls, const struct LookupMessage *message) | |||
383 | * @param message the message received | 400 | * @param message the message received |
384 | */ | 401 | */ |
385 | static void | 402 | static void |
386 | handle_lookup_by_suffix_message (void *cls, const struct LookupMessage *message) | 403 | handle_lookup_by_suffix_message (void *cls, |
404 | const struct LookupMessage *message) | ||
387 | { | 405 | { |
388 | struct GNUNET_SERVICE_Client *client = cls; | 406 | struct GNUNET_SERVICE_Client *client = cls; |
389 | const char *name; | 407 | const char *name; |
@@ -428,7 +446,8 @@ handle_lookup_by_suffix_message (void *cls, const struct LookupMessage *message) | |||
428 | * @return #GNUNET_OK if @a msg is well-formed | 446 | * @return #GNUNET_OK if @a msg is well-formed |
429 | */ | 447 | */ |
430 | static int | 448 | static int |
431 | check_get_default_message (void *cls, const struct GetDefaultMessage *msg) | 449 | check_get_default_message (void *cls, |
450 | const struct GetDefaultMessage *msg) | ||
432 | { | 451 | { |
433 | uint16_t size; | 452 | uint16_t size; |
434 | uint16_t name_len; | 453 | uint16_t name_len; |
@@ -461,31 +480,32 @@ check_get_default_message (void *cls, const struct GetDefaultMessage *msg) | |||
461 | * @param message the message received | 480 | * @param message the message received |
462 | */ | 481 | */ |
463 | static void | 482 | static void |
464 | handle_get_default_message (void *cls, const struct GetDefaultMessage *gdm) | 483 | handle_get_default_message (void *cls, |
484 | const struct GetDefaultMessage *gdm) | ||
465 | { | 485 | { |
466 | struct GNUNET_MQ_Envelope *env; | 486 | struct GNUNET_MQ_Envelope *env; |
467 | struct GNUNET_SERVICE_Client *client = cls; | 487 | struct GNUNET_SERVICE_Client *client = cls; |
468 | struct Ego *ego; | ||
469 | char *name; | 488 | char *name; |
470 | char *identifier; | 489 | char *identifier; |
471 | 490 | ||
472 | |||
473 | name = GNUNET_strdup ((const char *) &gdm[1]); | 491 | name = GNUNET_strdup ((const char *) &gdm[1]); |
474 | GNUNET_STRINGS_utf8_tolower ((const char *) &gdm[1], name); | 492 | GNUNET_STRINGS_utf8_tolower ((const char *) &gdm[1], |
493 | name); | ||
475 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 494 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
476 | "Received GET_DEFAULT for service `%s' from client\n", | 495 | "Received GET_DEFAULT for service `%s' from client\n", |
477 | name); | 496 | name); |
478 | if (GNUNET_OK != GNUNET_CONFIGURATION_get_value_string (subsystem_cfg, | 497 | if (GNUNET_OK != |
479 | name, | 498 | GNUNET_CONFIGURATION_get_value_string (subsystem_cfg, |
480 | "DEFAULT_IDENTIFIER", | 499 | name, |
481 | &identifier)) | 500 | "DEFAULT_IDENTIFIER", |
501 | &identifier)) | ||
482 | { | 502 | { |
483 | send_result_code (client, 1, gettext_noop ("no default known")); | 503 | send_result_code (client, 1, gettext_noop ("no default known")); |
484 | GNUNET_SERVICE_client_continue (client); | 504 | GNUNET_SERVICE_client_continue (client); |
485 | GNUNET_free (name); | 505 | GNUNET_free (name); |
486 | return; | 506 | return; |
487 | } | 507 | } |
488 | for (ego = ego_head; NULL != ego; ego = ego->next) | 508 | for (struct Ego *ego = ego_head; NULL != ego; ego = ego->next) |
489 | { | 509 | { |
490 | if (0 == strcmp (ego->identifier, identifier)) | 510 | if (0 == strcmp (ego->identifier, identifier)) |
491 | { | 511 | { |
@@ -498,7 +518,9 @@ handle_get_default_message (void *cls, const struct GetDefaultMessage *gdm) | |||
498 | } | 518 | } |
499 | } | 519 | } |
500 | GNUNET_free (identifier); | 520 | GNUNET_free (identifier); |
501 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Failed to find ego `%s'\n", name); | 521 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
522 | "Failed to find ego `%s'\n", | ||
523 | name); | ||
502 | GNUNET_free (name); | 524 | GNUNET_free (name); |
503 | send_result_code (client, | 525 | send_result_code (client, |
504 | 1, | 526 | 1, |
@@ -531,7 +553,8 @@ key_cmp (const struct GNUNET_CRYPTO_EcdsaPrivateKey *pk1, | |||
531 | * @return #GNUNET_OK if @a msg is well-formed | 553 | * @return #GNUNET_OK if @a msg is well-formed |
532 | */ | 554 | */ |
533 | static int | 555 | static int |
534 | check_set_default_message (void *cls, const struct SetDefaultMessage *msg) | 556 | check_set_default_message (void *cls, |
557 | const struct SetDefaultMessage *msg) | ||
535 | { | 558 | { |
536 | uint16_t size; | 559 | uint16_t size; |
537 | uint16_t name_len; | 560 | uint16_t name_len; |
@@ -569,7 +592,8 @@ check_set_default_message (void *cls, const struct SetDefaultMessage *msg) | |||
569 | * @param message the message received | 592 | * @param message the message received |
570 | */ | 593 | */ |
571 | static void | 594 | static void |
572 | handle_set_default_message (void *cls, const struct SetDefaultMessage *sdm) | 595 | handle_set_default_message (void *cls, |
596 | const struct SetDefaultMessage *sdm) | ||
573 | { | 597 | { |
574 | struct Ego *ego; | 598 | struct Ego *ego; |
575 | struct GNUNET_SERVICE_Client *client = cls; | 599 | struct GNUNET_SERVICE_Client *client = cls; |
@@ -642,7 +666,8 @@ notify_listeners (struct Ego *ego) | |||
642 | * @return #GNUNET_OK if @a msg is well-formed | 666 | * @return #GNUNET_OK if @a msg is well-formed |
643 | */ | 667 | */ |
644 | static int | 668 | static int |
645 | check_create_message (void *cls, const struct CreateRequestMessage *msg) | 669 | check_create_message (void *cls, |
670 | const struct CreateRequestMessage *msg) | ||
646 | { | 671 | { |
647 | uint16_t size; | 672 | uint16_t size; |
648 | uint16_t name_len; | 673 | uint16_t name_len; |
@@ -680,7 +705,8 @@ check_create_message (void *cls, const struct CreateRequestMessage *msg) | |||
680 | * @param message the message received | 705 | * @param message the message received |
681 | */ | 706 | */ |
682 | static void | 707 | static void |
683 | handle_create_message (void *cls, const struct CreateRequestMessage *crm) | 708 | handle_create_message (void *cls, |
709 | const struct CreateRequestMessage *crm) | ||
684 | { | 710 | { |
685 | struct GNUNET_SERVICE_Client *client = cls; | 711 | struct GNUNET_SERVICE_Client *client = cls; |
686 | struct Ego *ego; | 712 | struct Ego *ego; |
@@ -706,7 +732,9 @@ handle_create_message (void *cls, const struct CreateRequestMessage *crm) | |||
706 | ego = GNUNET_new (struct Ego); | 732 | ego = GNUNET_new (struct Ego); |
707 | ego->pk = crm->private_key; | 733 | ego->pk = crm->private_key; |
708 | ego->identifier = GNUNET_strdup (str); | 734 | ego->identifier = GNUNET_strdup (str); |
709 | GNUNET_CONTAINER_DLL_insert (ego_head, ego_tail, ego); | 735 | GNUNET_CONTAINER_DLL_insert (ego_head, |
736 | ego_tail, | ||
737 | ego); | ||
710 | send_result_code (client, 0, NULL); | 738 | send_result_code (client, 0, NULL); |
711 | fn = get_ego_filename (ego); | 739 | fn = get_ego_filename (ego); |
712 | (void) GNUNET_DISK_directory_create_for_file (fn); | 740 | (void) GNUNET_DISK_directory_create_for_file (fn); |