diff options
Diffstat (limited to 'src/gnunet_chat_handle_intern.c')
-rw-r--r-- | src/gnunet_chat_handle_intern.c | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/src/gnunet_chat_handle_intern.c b/src/gnunet_chat_handle_intern.c index bb4c107..e3f660d 100644 --- a/src/gnunet_chat_handle_intern.c +++ b/src/gnunet_chat_handle_intern.c | |||
@@ -212,10 +212,31 @@ on_handle_gnunet_identity(void *cls, | |||
212 | return; | 212 | return; |
213 | } | 213 | } |
214 | 214 | ||
215 | struct GNUNET_CHAT_InternalAccounts *accounts = GNUNET_new( | 215 | struct GNUNET_CHAT_InternalAccounts *accounts = handle->accounts_head; |
216 | struct GNUNET_CHAT_InternalAccounts | 216 | |
217 | ); | 217 | while (accounts) |
218 | { | ||
219 | if (!(accounts->account)) | ||
220 | goto skip_account; | ||
221 | |||
222 | if ((accounts->account->name) && | ||
223 | (0 == strcmp(accounts->account->name, name))) | ||
224 | { | ||
225 | accounts->account->ego = ego; | ||
226 | return; | ||
227 | } | ||
228 | |||
229 | if (ego == accounts->account->ego) | ||
230 | { | ||
231 | util_set_name_field(name, &(accounts->account->name)); | ||
232 | return; | ||
233 | } | ||
234 | |||
235 | skip_account: | ||
236 | accounts = accounts->next; | ||
237 | } | ||
218 | 238 | ||
239 | accounts = GNUNET_new(struct GNUNET_CHAT_InternalAccounts); | ||
219 | accounts->account = account_create_from_ego(ego, name); | 240 | accounts->account = account_create_from_ego(ego, name); |
220 | 241 | ||
221 | GNUNET_CONTAINER_DLL_insert_tail( | 242 | GNUNET_CONTAINER_DLL_insert_tail( |