summaryrefslogtreecommitdiff
path: root/src/gnunet_chat_lobby_intern.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gnunet_chat_lobby_intern.c')
-rw-r--r--src/gnunet_chat_lobby_intern.c79
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);
}