diff options
Diffstat (limited to 'src/arm/gnunet-service-arm.c')
-rw-r--r-- | src/arm/gnunet-service-arm.c | 94 |
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 | */ | ||
969 | static unsigned int | 979 | static unsigned int |
970 | list_count (struct ServiceList *running_head) | 980 | list_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); |