aboutsummaryrefslogtreecommitdiff
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 @@
25#include "gnunet_chat_context.h" 25#include "gnunet_chat_context.h"
26 26
27void 27void
28cont_lobby_write_records (void *cls, 28cont_lobby_identity_delete (void *cls,
29 GNUNET_UNUSED int32_t success, 29 const char *emsg)
30 const char *emsg)
31{ 30{
32 struct GNUNET_CHAT_Lobby *lobby = cls; 31 struct GNUNET_CHAT_Lobby *lobby = cls;
33 32
33 GNUNET_assert(lobby);
34
35 lobby->op_delete = NULL;
36
34 if (!emsg) 37 if (!emsg)
35 goto call_cb; 38 return;
36 39
37 handle_send_internal_message( 40 handle_send_internal_message(
38 lobby->handle, 41 lobby->handle,
@@ -40,25 +43,40 @@ cont_lobby_write_records (void *cls,
40 GNUNET_CHAT_FLAG_WARNING, 43 GNUNET_CHAT_FLAG_WARNING,
41 emsg 44 emsg
42 ); 45 );
43
44 if (lobby->uri)
45 uri_destroy(lobby->uri);
46
47 lobby->uri = NULL;
48
49call_cb:
50 if (lobby->callback)
51 lobby->callback(lobby->cls, lobby->uri);
52} 46}
53 47
54void 48void
55cont_lobby_identity_delete (void *cls, 49cont_lobby_write_records (void *cls,
56 const char *emsg) 50 GNUNET_UNUSED int32_t success,
51 const char *emsg)
57{ 52{
58 struct GNUNET_CHAT_Lobby *lobby = cls; 53 struct GNUNET_CHAT_Lobby *lobby = cls;
59 54
55 GNUNET_assert(lobby);
56
57 lobby->query = NULL;
58
59 const struct GNUNET_HashCode *key = GNUNET_MESSENGER_room_get_key(
60 lobby->context->room
61 );
62
63 char *name;
64 util_lobby_name(key, &name);
65
66 lobby->op_delete = GNUNET_IDENTITY_delete(
67 lobby->handle->identity,
68 name,
69 cont_lobby_identity_delete,
70 lobby
71 );
72
73 GNUNET_free(name);
74
60 if (!emsg) 75 if (!emsg)
61 return; 76 {
77 context_write_records(lobby->context);
78 goto call_cb;
79 }
62 80
63 handle_send_internal_message( 81 handle_send_internal_message(
64 lobby->handle, 82 lobby->handle,
@@ -66,6 +84,15 @@ cont_lobby_identity_delete (void *cls,
66 GNUNET_CHAT_FLAG_WARNING, 84 GNUNET_CHAT_FLAG_WARNING,
67 emsg 85 emsg
68 ); 86 );
87
88 if (lobby->uri)
89 uri_destroy(lobby->uri);
90
91 lobby->uri = NULL;
92
93call_cb:
94 if (lobby->callback)
95 lobby->callback(lobby->cls, lobby->uri);
69} 96}
70 97
71void 98void
@@ -75,6 +102,10 @@ cont_lobby_identity_create (void *cls,
75{ 102{
76 struct GNUNET_CHAT_Lobby *lobby = cls; 103 struct GNUNET_CHAT_Lobby *lobby = cls;
77 104
105 GNUNET_assert(lobby);
106
107 lobby->op_create = NULL;
108
78 if (emsg) 109 if (emsg)
79 { 110 {
80 handle_send_internal_message( 111 handle_send_internal_message(
@@ -114,7 +145,7 @@ cont_lobby_identity_create (void *cls,
114 lobby->uri = uri_create(&public_zone, label); 145 lobby->uri = uri_create(&public_zone, label);
115 GNUNET_free(label); 146 GNUNET_free(label);
116 147
117 GNUNET_NAMESTORE_records_store( 148 lobby->query = GNUNET_NAMESTORE_records_store(
118 lobby->handle->namestore, 149 lobby->handle->namestore,
119 zone, 150 zone,
120 lobby->uri->label, 151 lobby->uri->label,
@@ -123,18 +154,4 @@ cont_lobby_identity_create (void *cls,
123 cont_lobby_write_records, 154 cont_lobby_write_records,
124 lobby 155 lobby
125 ); 156 );
126
127 context_write_records(lobby->context);
128
129 char *name;
130 util_lobby_name(key, &name);
131
132 lobby->op_delete = GNUNET_IDENTITY_delete(
133 lobby->handle->identity,
134 name,
135 cont_lobby_identity_delete,
136 lobby
137 );
138
139 GNUNET_free(name);
140} 157}