aboutsummaryrefslogtreecommitdiff
path: root/src/arm/gnunet-service-arm.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/arm/gnunet-service-arm.c')
-rw-r--r--src/arm/gnunet-service-arm.c94
1 files changed, 52 insertions, 42 deletions
diff --git a/src/arm/gnunet-service-arm.c b/src/arm/gnunet-service-arm.c
index 704b6f2fc..af232b11c 100644
--- a/src/arm/gnunet-service-arm.c
+++ b/src/arm/gnunet-service-arm.c
@@ -260,7 +260,7 @@ write_result (void *cls, size_t size, void *buf)
260 struct GNUNET_ARM_ResultMessage *msg = cls; 260 struct GNUNET_ARM_ResultMessage *msg = cls;
261 size_t msize; 261 size_t msize;
262 262
263 if (buf == NULL) 263 if (NULL == buf)
264 { 264 {
265 GNUNET_log (GNUNET_ERROR_TYPE_WARNING, 265 GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
266 _("Could not send status result to client\n")); 266 _("Could not send status result to client\n"));
@@ -296,7 +296,7 @@ write_list_result (void *cls, size_t size, void *buf)
296 struct GNUNET_ARM_ListResultMessage *msg = cls; 296 struct GNUNET_ARM_ListResultMessage *msg = cls;
297 size_t rslt_size; 297 size_t rslt_size;
298 298
299 if (buf == NULL) 299 if (NULL == buf)
300 { 300 {
301 GNUNET_log (GNUNET_ERROR_TYPE_WARNING, 301 GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
302 _("Could not send list result to client\n")); 302 _("Could not send list result to client\n"));
@@ -525,14 +525,19 @@ start_process (struct ServiceList *sl,
525 GNUNET_free (quotedbinary); 525 GNUNET_free (quotedbinary);
526 if (sl->proc == NULL) 526 if (sl->proc == NULL)
527 { 527 {
528 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, _("Failed to start service `%s'\n"), 528 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
529 _("Failed to start service `%s'\n"),
529 sl->name); 530 sl->name);
530 if (client) 531 if (client)
531 signal_result (client, sl->name, request_id, GNUNET_ARM_RESULT_START_FAILED); 532 signal_result (client,
533 sl->name,
534 request_id,
535 GNUNET_ARM_RESULT_START_FAILED);
532 } 536 }
533 else 537 else
534 { 538 {
535 GNUNET_log (GNUNET_ERROR_TYPE_INFO, _("Starting service `%s'\n"), 539 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
540 _("Starting service `%s'\n"),
536 sl->name); 541 sl->name);
537 broadcast_status (sl->name, GNUNET_ARM_SERVICE_STARTING, NULL); 542 broadcast_status (sl->name, GNUNET_ARM_SERVICE_STARTING, NULL);
538 if (client) 543 if (client)
@@ -903,7 +908,7 @@ handle_list (void *cls, struct GNUNET_SERVER_Client *client,
903 /* first count the running processes get their name's size */ 908 /* first count the running processes get their name's size */
904 for (sl = running_head; NULL != sl; sl = sl->next) 909 for (sl = running_head; NULL != sl; sl = sl->next)
905 { 910 {
906 if (sl->proc != NULL) 911 if (NULL != sl->proc)
907 { 912 {
908 string_list_size += strlen (sl->name); 913 string_list_size += strlen (sl->name);
909 string_list_size += strlen (sl->binary); 914 string_list_size += strlen (sl->binary);
@@ -922,20 +927,19 @@ handle_list (void *cls, struct GNUNET_SERVER_Client *client,
922 msg->count = count; 927 msg->count = count;
923 928
924 char *pos = (char *)&msg[1]; 929 char *pos = (char *)&msg[1];
925 for (sl = running_head; sl != NULL; sl = sl->next) 930 for (sl = running_head; NULL != sl; sl = sl->next)
926 { 931 {
927 if (sl->proc != NULL) 932 if (NULL != sl->proc)
928 { 933 {
929 size_t s = strlen (sl->name) + strlen (sl->binary) + 4; 934 size_t s = strlen (sl->name) + strlen (sl->binary) + 4;
930 GNUNET_snprintf(pos, s, "%s (%s)", sl->name, sl->binary); 935 GNUNET_snprintf (pos, s, "%s (%s)", sl->name, sl->binary);
931 pos += s; 936 pos += s;
932 } 937 }
933 } 938 }
934
935 GNUNET_SERVER_notify_transmit_ready (client, 939 GNUNET_SERVER_notify_transmit_ready (client,
936 total_size, 940 total_size,
937 GNUNET_TIME_UNIT_FOREVER_REL, 941 GNUNET_TIME_UNIT_FOREVER_REL,
938 write_list_result, msg); 942 &write_list_result, msg);
939 GNUNET_SERVER_receive_done (client, GNUNET_OK); 943 GNUNET_SERVER_receive_done (client, GNUNET_OK);
940} 944}
941 945
@@ -966,6 +970,12 @@ do_shutdown ()
966} 970}
967 971
968 972
973/**
974 * Count how many services are still active.
975 *
976 * @param running_head list of services
977 * @return number of active services found
978 */
969static unsigned int 979static unsigned int
970list_count (struct ServiceList *running_head) 980list_count (struct ServiceList *running_head)
971{ 981{
@@ -1442,8 +1452,9 @@ run (void *cls, struct GNUNET_SERVER_Handle *serv,
1442 1452
1443 cfg = c; 1453 cfg = c;
1444 server = serv; 1454 server = serv;
1445 GNUNET_assert (serv != NULL); 1455 GNUNET_assert (NULL != serv);
1446 GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL, &shutdown_task, 1456 GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL,
1457 &shutdown_task,
1447 NULL); 1458 NULL);
1448 child_death_task = 1459 child_death_task =
1449 GNUNET_SCHEDULER_add_read_file (GNUNET_TIME_UNIT_FOREVER_REL, 1460 GNUNET_SCHEDULER_add_read_file (GNUNET_TIME_UNIT_FOREVER_REL,
@@ -1464,50 +1475,49 @@ run (void *cls, struct GNUNET_SERVER_Handle *serv,
1464 { 1475 {
1465 GNUNET_break (GNUNET_YES == start_user); 1476 GNUNET_break (GNUNET_YES == start_user);
1466 start_system = GNUNET_NO; 1477 start_system = GNUNET_NO;
1467 return;
1468 } 1478 }
1469 if (GNUNET_YES == 1479 if (GNUNET_YES ==
1470 GNUNET_CONFIGURATION_get_value_yesno (cfg, "ARM", "SYSTEM_ONLY")) 1480 GNUNET_CONFIGURATION_get_value_yesno (cfg, "ARM", "SYSTEM_ONLY"))
1471 { 1481 {
1472 GNUNET_break (GNUNET_YES == start_system); 1482 GNUNET_break (GNUNET_YES == start_system);
1473 start_user = GNUNET_NO; 1483 start_user = GNUNET_NO;
1474 return;
1475 } 1484 }
1476 GNUNET_CONFIGURATION_iterate_sections (cfg, &setup_service, NULL); 1485 GNUNET_CONFIGURATION_iterate_sections (cfg, &setup_service, NULL);
1477 1486
1478 /* start default services... */ 1487 /* start default services... */
1479 if (GNUNET_OK == 1488 if (GNUNET_OK ==
1480 GNUNET_CONFIGURATION_get_value_string (cfg, "ARM", "DEFAULTSERVICES", 1489 GNUNET_CONFIGURATION_get_value_string (cfg,
1490 "ARM",
1491 "DEFAULTSERVICES",
1481 &defaultservices)) 1492 &defaultservices))
1493 {
1494 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
1495 _("Starting default services `%s'\n"),
1496 defaultservices);
1497 if (0 < strlen (defaultservices))
1482 { 1498 {
1483 GNUNET_log (GNUNET_ERROR_TYPE_INFO, 1499 for (pos = strtok (defaultservices, " "); NULL != pos;
1484 _("Starting default services `%s'\n"), defaultservices); 1500 pos = strtok (NULL, " "))
1485 if (0 < strlen (defaultservices)) 1501 {
1486 { 1502 sl = find_service (pos);
1487 for (pos = strtok (defaultservices, " "); NULL != pos; 1503 if (NULL == sl)
1488 pos = strtok (NULL, " ")) 1504 {
1489 { 1505 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
1490 sl = find_service (pos); 1506 _("Default service `%s' not configured correctly!\n"),
1491 if (NULL == sl) 1507 pos);
1492 { 1508 continue;
1493 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, 1509 }
1494 _ 1510 sl->is_default = GNUNET_YES;
1495 ("Default service `%s' not configured correctly!\n"), 1511 start_process (sl, NULL, 0);
1496 pos); 1512 }
1497 continue;
1498 }
1499 sl->is_default = GNUNET_YES;
1500 start_process (sl, NULL, 0);
1501 }
1502 }
1503 GNUNET_free (defaultservices);
1504 } 1513 }
1514 GNUNET_free (defaultservices);
1515 }
1505 else 1516 else
1506 { 1517 {
1507 GNUNET_log (GNUNET_ERROR_TYPE_INFO, 1518 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
1508 _ 1519 _("No default services configured, GNUnet will not really start right now.\n"));
1509 ("No default services configured, GNUnet will not really start right now.\n")); 1520 }
1510 }
1511 1521
1512 notifier = 1522 notifier =
1513 GNUNET_SERVER_notification_context_create (server, MAX_NOTIFY_QUEUE); 1523 GNUNET_SERVER_notification_context_create (server, MAX_NOTIFY_QUEUE);