diff options
author | Gabor X Toth <*@tg-x.net> | 2016-05-11 20:12:08 +0000 |
---|---|---|
committer | Gabor X Toth <*@tg-x.net> | 2016-05-11 20:12:08 +0000 |
commit | df87fe209a93062875caa4ea78a601bed0777db0 (patch) | |
tree | ed1c39bd21ddf74eb1b4003bb3671c8767a63d80 /src/social/gnunet-social.c | |
parent | 641c9c191ec41b1725d9df01af4101c3423772bb (diff) | |
download | gnunet-df87fe209a93062875caa4ea78a601bed0777db0.tar.gz gnunet-df87fe209a93062875caa4ea78a601bed0777db0.zip |
social cli: transmit fix, sig handlers
Diffstat (limited to 'src/social/gnunet-social.c')
-rw-r--r-- | src/social/gnunet-social.c | 58 |
1 files changed, 40 insertions, 18 deletions
diff --git a/src/social/gnunet-social.c b/src/social/gnunet-social.c index 0d236b2ff..97c6d7bda 100644 --- a/src/social/gnunet-social.c +++ b/src/social/gnunet-social.c | |||
@@ -155,20 +155,38 @@ struct GNUNET_SOCIAL_Place *plc; | |||
155 | 155 | ||
156 | 156 | ||
157 | static void | 157 | static void |
158 | disconnect () | 158 | disconnected (void *cls) |
159 | { | ||
160 | GNUNET_SCHEDULER_shutdown (); | ||
161 | } | ||
162 | |||
163 | |||
164 | static void | ||
165 | app_disconnected (void *cls) | ||
159 | { | 166 | { |
160 | if (hst) | 167 | if (hst || gst) |
161 | { | 168 | { |
162 | GNUNET_SOCIAL_host_disconnect (hst, NULL, NULL); | 169 | if (hst) |
170 | { | ||
171 | GNUNET_SOCIAL_host_disconnect (hst, disconnected, NULL); | ||
172 | } | ||
173 | if (gst) | ||
174 | { | ||
175 | GNUNET_SOCIAL_guest_disconnect (gst, disconnected, NULL); | ||
176 | } | ||
163 | } | 177 | } |
164 | if (gst) | 178 | else |
165 | { | 179 | { |
166 | GNUNET_SOCIAL_guest_disconnect (gst, NULL, NULL); | 180 | GNUNET_SCHEDULER_shutdown (); |
167 | } | 181 | } |
182 | } | ||
183 | |||
168 | 184 | ||
169 | GNUNET_SOCIAL_app_disconnect (app); | 185 | static void |
186 | disconnect () | ||
187 | { | ||
170 | GNUNET_CORE_disconnect (core); | 188 | GNUNET_CORE_disconnect (core); |
171 | GNUNET_SCHEDULER_shutdown (); | 189 | GNUNET_SOCIAL_app_disconnect (app, app_disconnected, NULL); |
172 | } | 190 | } |
173 | 191 | ||
174 | /** | 192 | /** |
@@ -206,7 +224,7 @@ exit_success () | |||
206 | GNUNET_SCHEDULER_cancel (timeout_task); | 224 | GNUNET_SCHEDULER_cancel (timeout_task); |
207 | timeout_task = NULL; | 225 | timeout_task = NULL; |
208 | } | 226 | } |
209 | GNUNET_SCHEDULER_add_now (&schedule_success, NULL); | 227 | GNUNET_SCHEDULER_add_now (schedule_success, NULL); |
210 | } | 228 | } |
211 | 229 | ||
212 | 230 | ||
@@ -218,7 +236,7 @@ exit_fail () | |||
218 | GNUNET_SCHEDULER_cancel (timeout_task); | 236 | GNUNET_SCHEDULER_cancel (timeout_task); |
219 | timeout_task = NULL; | 237 | timeout_task = NULL; |
220 | } | 238 | } |
221 | GNUNET_SCHEDULER_add_now (&schedule_fail, NULL); | 239 | GNUNET_SCHEDULER_add_now (schedule_fail, NULL); |
222 | } | 240 | } |
223 | 241 | ||
224 | 242 | ||
@@ -237,7 +255,7 @@ host_left () | |||
237 | static void | 255 | static void |
238 | host_leave () | 256 | host_leave () |
239 | { | 257 | { |
240 | GNUNET_SOCIAL_host_leave (hst, NULL, &host_left, NULL); | 258 | GNUNET_SOCIAL_host_leave (hst, NULL, host_left, NULL); |
241 | hst = NULL; | 259 | hst = NULL; |
242 | plc = NULL; | 260 | plc = NULL; |
243 | } | 261 | } |
@@ -258,7 +276,7 @@ guest_leave () | |||
258 | // method in the middle of vars? FIXME | 276 | // method in the middle of vars? FIXME |
259 | GNUNET_PSYC_env_add (env, GNUNET_PSYC_OP_SET, | 277 | GNUNET_PSYC_env_add (env, GNUNET_PSYC_OP_SET, |
260 | "_notice_place_leave", DATA2ARG ("Leaving.")); | 278 | "_notice_place_leave", DATA2ARG ("Leaving.")); |
261 | GNUNET_SOCIAL_guest_leave (gst, env, &guest_left, NULL); | 279 | GNUNET_SOCIAL_guest_leave (gst, env, guest_left, NULL); |
262 | GNUNET_PSYC_env_destroy (env); | 280 | GNUNET_PSYC_env_destroy (env); |
263 | gst = NULL; | 281 | gst = NULL; |
264 | plc = NULL; | 282 | plc = NULL; |
@@ -296,11 +314,11 @@ notify_data (void *cls, uint16_t *data_size, void *data) | |||
296 | { | 314 | { |
297 | exit_success (); | 315 | exit_success (); |
298 | } | 316 | } |
299 | return GNUNET_NO; | 317 | return GNUNET_YES; |
300 | } | 318 | } |
301 | else | 319 | else |
302 | { | 320 | { |
303 | return GNUNET_YES; | 321 | return GNUNET_NO; |
304 | } | 322 | } |
305 | } | 323 | } |
306 | 324 | ||
@@ -317,7 +335,7 @@ host_announce (const char *method, const char *data, size_t data_size) | |||
317 | tmit.size = data_size; | 335 | tmit.size = data_size; |
318 | 336 | ||
319 | GNUNET_SOCIAL_host_announce (hst, method, env, | 337 | GNUNET_SOCIAL_host_announce (hst, method, env, |
320 | ¬ify_data, &tmit, | 338 | notify_data, &tmit, |
321 | GNUNET_SOCIAL_ANNOUNCE_NONE); | 339 | GNUNET_SOCIAL_ANNOUNCE_NONE); |
322 | } | 340 | } |
323 | 341 | ||
@@ -335,7 +353,7 @@ guest_talk (const char *method, | |||
335 | tmit.size = data_size; | 353 | tmit.size = data_size; |
336 | 354 | ||
337 | GNUNET_SOCIAL_guest_talk (gst, method, env, | 355 | GNUNET_SOCIAL_guest_talk (gst, method, env, |
338 | ¬ify_data, &tmit, | 356 | notify_data, &tmit, |
339 | GNUNET_SOCIAL_TALK_NONE); | 357 | GNUNET_SOCIAL_TALK_NONE); |
340 | } | 358 | } |
341 | 359 | ||
@@ -365,7 +383,7 @@ history_replay (uint64_t start, uint64_t end, const char *prefix) | |||
365 | GNUNET_SOCIAL_place_history_replay (plc, start, end, prefix, | 383 | GNUNET_SOCIAL_place_history_replay (plc, start, end, prefix, |
366 | GNUNET_PSYC_HISTORY_REPLAY_LOCAL, | 384 | GNUNET_PSYC_HISTORY_REPLAY_LOCAL, |
367 | slicer, | 385 | slicer, |
368 | &recv_history_replay_result, | 386 | recv_history_replay_result, |
369 | NULL); | 387 | NULL); |
370 | } | 388 | } |
371 | 389 | ||
@@ -376,7 +394,7 @@ history_replay_latest (uint64_t limit, const char *prefix) | |||
376 | GNUNET_SOCIAL_place_history_replay_latest (plc, limit, prefix, | 394 | GNUNET_SOCIAL_place_history_replay_latest (plc, limit, prefix, |
377 | GNUNET_PSYC_HISTORY_REPLAY_LOCAL, | 395 | GNUNET_PSYC_HISTORY_REPLAY_LOCAL, |
378 | slicer, | 396 | slicer, |
379 | &recv_history_replay_result, | 397 | recv_history_replay_result, |
380 | NULL); | 398 | NULL); |
381 | } | 399 | } |
382 | 400 | ||
@@ -916,6 +934,10 @@ static void | |||
916 | run (void *cls, char *const *args, const char *cfgfile, | 934 | run (void *cls, char *const *args, const char *cfgfile, |
917 | const struct GNUNET_CONFIGURATION_Handle *c) | 935 | const struct GNUNET_CONFIGURATION_Handle *c) |
918 | { | 936 | { |
937 | GNUNET_SIGNAL_handler_install (SIGINT, disconnect); | ||
938 | GNUNET_SIGNAL_handler_install (SIGTERM, disconnect); | ||
939 | GNUNET_SIGNAL_handler_install (SIGKILL, disconnect); | ||
940 | |||
919 | cfg = c; | 941 | cfg = c; |
920 | 942 | ||
921 | if (!opt_method) | 943 | if (!opt_method) |
@@ -936,7 +958,7 @@ run (void *cls, char *const *args, const char *cfgfile, | |||
936 | 958 | ||
937 | if (!opt_follow) | 959 | if (!opt_follow) |
938 | { | 960 | { |
939 | timeout_task = GNUNET_SCHEDULER_add_delayed (TIMEOUT, &timeout, NULL); | 961 | timeout_task = GNUNET_SCHEDULER_add_delayed (TIMEOUT, timeout, NULL); |
940 | } | 962 | } |
941 | 963 | ||
942 | if ((op_host_reconnect || op_host_leave || op_host_announce | 964 | if ((op_host_reconnect || op_host_leave || op_host_announce |