diff options
Diffstat (limited to 'src/gnunet_chat_handle_intern.c')
-rw-r--r-- | src/gnunet_chat_handle_intern.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/src/gnunet_chat_handle_intern.c b/src/gnunet_chat_handle_intern.c index 63758a8..e278eaf 100644 --- a/src/gnunet_chat_handle_intern.c +++ b/src/gnunet_chat_handle_intern.c @@ -219,12 +219,12 @@ notify_handle_fs_progress(void* cls, void on_handle_gnunet_identity(void *cls, struct GNUNET_IDENTITY_Ego *ego, - GNUNET_UNUSED void **ctx, + void **ctx, const char *name) { struct GNUNET_CHAT_Handle* handle = cls; - if (!name) + if (!ctx) return; if (!ego) @@ -241,9 +241,22 @@ on_handle_gnunet_identity(void *cls, goto check_matching_name; if (name) + { util_set_name_field(name, &(accounts->account->name)); + + if (handle->current == accounts->account) + handle_send_internal_message( + handle, + NULL, + GNUNET_CHAT_FLAG_LOGIN, + NULL + ); + } else { + if (handle->current == accounts->account) + handle_disconnect(handle); + account_destroy(accounts->account); GNUNET_CONTAINER_DLL_remove( @@ -269,6 +282,9 @@ skip_account: accounts = accounts->next; } + if (!name) + return; + accounts = GNUNET_new(struct GNUNET_CHAT_InternalAccounts); accounts->account = account_create_from_ego(ego, name); |