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 @@ | |||
25 | #include "gnunet_chat_context.h" | 25 | #include "gnunet_chat_context.h" |
26 | 26 | ||
27 | void | 27 | void |
28 | cont_lobby_write_records (void *cls, | 28 | cont_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 | |||
49 | call_cb: | ||
50 | if (lobby->callback) | ||
51 | lobby->callback(lobby->cls, lobby->uri); | ||
52 | } | 46 | } |
53 | 47 | ||
54 | void | 48 | void |
55 | cont_lobby_identity_delete (void *cls, | 49 | cont_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 | |||
93 | call_cb: | ||
94 | if (lobby->callback) | ||
95 | lobby->callback(lobby->cls, lobby->uri); | ||
69 | } | 96 | } |
70 | 97 | ||
71 | void | 98 | void |
@@ -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 | } |