diff options
Diffstat (limited to 'src/gnunet_chat_lobby_intern.c')
-rw-r--r-- | src/gnunet_chat_lobby_intern.c | 79 |
1 files changed, 48 insertions, 31 deletions
diff --git a/src/gnunet_chat_lobby_intern.c b/src/gnunet_chat_lobby_intern.c index 31d1673..0c5a647 100644 --- a/src/gnunet_chat_lobby_intern.c +++ b/src/gnunet_chat_lobby_intern.c @@ -25,14 +25,17 @@ #include "gnunet_chat_context.h" void -cont_lobby_write_records (void *cls, - GNUNET_UNUSED int32_t success, - const char *emsg) +cont_lobby_identity_delete (void *cls, + const char *emsg) { struct GNUNET_CHAT_Lobby *lobby = cls; + GNUNET_assert(lobby); + + lobby->op_delete = NULL; + if (!emsg) - goto call_cb; + return; handle_send_internal_message( lobby->handle, @@ -40,25 +43,40 @@ cont_lobby_write_records (void *cls, GNUNET_CHAT_FLAG_WARNING, emsg ); - - if (lobby->uri) - uri_destroy(lobby->uri); - - lobby->uri = NULL; - -call_cb: - if (lobby->callback) - lobby->callback(lobby->cls, lobby->uri); } void -cont_lobby_identity_delete (void *cls, - const char *emsg) +cont_lobby_write_records (void *cls, + GNUNET_UNUSED int32_t success, + const char *emsg) { struct GNUNET_CHAT_Lobby *lobby = cls; + GNUNET_assert(lobby); + + lobby->query = NULL; + + const struct GNUNET_HashCode *key = GNUNET_MESSENGER_room_get_key( + lobby->context->room + ); + + char *name; + util_lobby_name(key, &name); + + lobby->op_delete = GNUNET_IDENTITY_delete( + lobby->handle->identity, + name, + cont_lobby_identity_delete, + lobby + ); + + GNUNET_free(name); + if (!emsg) - return; + { + context_write_records(lobby->context); + goto call_cb; + } handle_send_internal_message( lobby->handle, @@ -66,6 +84,15 @@ cont_lobby_identity_delete (void *cls, GNUNET_CHAT_FLAG_WARNING, emsg ); + + if (lobby->uri) + uri_destroy(lobby->uri); + + lobby->uri = NULL; + +call_cb: + if (lobby->callback) + lobby->callback(lobby->cls, lobby->uri); } void @@ -75,6 +102,10 @@ cont_lobby_identity_create (void *cls, { struct GNUNET_CHAT_Lobby *lobby = cls; + GNUNET_assert(lobby); + + lobby->op_create = NULL; + if (emsg) { handle_send_internal_message( @@ -114,7 +145,7 @@ cont_lobby_identity_create (void *cls, lobby->uri = uri_create(&public_zone, label); GNUNET_free(label); - GNUNET_NAMESTORE_records_store( + lobby->query = GNUNET_NAMESTORE_records_store( lobby->handle->namestore, zone, lobby->uri->label, @@ -123,18 +154,4 @@ cont_lobby_identity_create (void *cls, cont_lobby_write_records, lobby ); - - context_write_records(lobby->context); - - char *name; - util_lobby_name(key, &name); - - lobby->op_delete = GNUNET_IDENTITY_delete( - lobby->handle->identity, - name, - cont_lobby_identity_delete, - lobby - ); - - GNUNET_free(name); } |