aboutsummaryrefslogtreecommitdiff
path: root/src/arm/gnunet-arm.c
diff options
context:
space:
mode:
authorLRN <lrn1986@gmail.com>2013-03-20 18:50:18 +0000
committerLRN <lrn1986@gmail.com>2013-03-20 18:50:18 +0000
commit346748a3a55e197fe206e87b0520cef85ab9fda3 (patch)
tree37bc351cba1af84ee12e8d5dcd6d596f0456da3f /src/arm/gnunet-arm.c
parent41646c7ce6e3d1711beb4b95da08afbd5b79d097 (diff)
downloadgnunet-346748a3a55e197fe206e87b0520cef85ab9fda3.tar.gz
gnunet-346748a3a55e197fe206e87b0520cef85ab9fda3.zip
Simplify ARM alloc/connect
Diffstat (limited to 'src/arm/gnunet-arm.c')
-rw-r--r--src/arm/gnunet-arm.c32
1 files changed, 21 insertions, 11 deletions
diff --git a/src/arm/gnunet-arm.c b/src/arm/gnunet-arm.c
index 095d60e36..3d94fed80 100644
--- a/src/arm/gnunet-arm.c
+++ b/src/arm/gnunet-arm.c
@@ -179,7 +179,7 @@ static void
179shutdown_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) 179shutdown_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
180{ 180{
181 GNUNET_ARM_disconnect_and_free (h); 181 GNUNET_ARM_disconnect_and_free (h);
182 GNUNET_ARM_monitor_disconnect (m); 182 GNUNET_ARM_monitor_disconnect_and_free (m);
183 h = NULL; 183 h = NULL;
184 m = NULL; 184 m = NULL;
185 if ((end == GNUNET_YES) && (delete == GNUNET_YES)) 185 if ((end == GNUNET_YES) && (delete == GNUNET_YES))
@@ -246,14 +246,15 @@ static void action_loop (void *cls, const struct GNUNET_SCHEDULER_TaskContext *t
246 * 246 *
247 * @param cls closure 247 * @param cls closure
248 * @param arm handle to the ARM connection 248 * @param arm handle to the ARM connection
249 * @param connected GNUNET_YES if connected, GNUNET_NO if disconnected 249 * @param connected GNUNET_YES if connected, GNUNET_NO if disconnected,
250 * GNUNET_SYSERR on error.
250 * @param error GNUNET_YES if we encountered a permanent error, and there 251 * @param error GNUNET_YES if we encountered a permanent error, and there
251 * will be no re-connection. 252 * will be no re-connection.
252 */ 253 */
253static void 254static void
254conn_status (void *cls, struct GNUNET_ARM_Handle *arm, unsigned char connected, unsigned char error) 255conn_status (void *cls, struct GNUNET_ARM_Handle *arm, char connected)
255{ 256{
256 if (GNUNET_YES == error) 257 if (GNUNET_SYSERR == connected)
257 { 258 {
258 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, 259 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
259 _("Fatal error initializing ARM API.\n")); 260 _("Fatal error initializing ARM API.\n"));
@@ -575,13 +576,22 @@ run (void *cls, char *const *args, const char *cfgfile,
575 else 576 else
576 GNUNET_free (armconfig); 577 GNUNET_free (armconfig);
577 } 578 }
578 h = GNUNET_ARM_alloc (cfg); 579 h = GNUNET_ARM_connect (cfg, conn_status, NULL);
579 m = GNUNET_ARM_monitor_alloc (cfg); 580 if (NULL != h)
580 GNUNET_ARM_connect (h, conn_status, NULL); 581 {
581 GNUNET_ARM_monitor (m, srv_status, NULL); 582 m = GNUNET_ARM_monitor (cfg, srv_status, NULL);
582 GNUNET_SCHEDULER_add_now (action_loop, NULL); 583 if (NULL != m)
583 GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL, 584 {
584 shutdown_task, NULL); 585 GNUNET_SCHEDULER_add_now (action_loop, NULL);
586 GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL,
587 shutdown_task, NULL);
588 }
589 else
590 {
591 GNUNET_ARM_disconnect_and_free (h);
592 h = NULL;
593 }
594 }
585} 595}
586 596
587 597