diff options
author | Christian Grothoff <christian@grothoff.org> | 2010-10-20 13:17:20 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2010-10-20 13:17:20 +0000 |
commit | 6a9d2a6399b00fedb0ec0b921d1e7068f0be33b1 (patch) | |
tree | 6d08fbf60a732356ec221eeb8abc8959bf12a654 /src/arm | |
parent | 086092274020d3f6c78a71dbbdd9076cf7657f79 (diff) | |
download | gnunet-6a9d2a6399b00fedb0ec0b921d1e7068f0be33b1.tar.gz gnunet-6a9d2a6399b00fedb0ec0b921d1e7068f0be33b1.zip |
close pipe on exit
Diffstat (limited to 'src/arm')
-rw-r--r-- | src/arm/gnunet-service-arm.c | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/src/arm/gnunet-service-arm.c b/src/arm/gnunet-service-arm.c index adefb4269..0ebc39c8a 100644 --- a/src/arm/gnunet-service-arm.c +++ b/src/arm/gnunet-service-arm.c | |||
@@ -695,8 +695,6 @@ do_shutdown () | |||
695 | { | 695 | { |
696 | GNUNET_SERVER_destroy (server); | 696 | GNUNET_SERVER_destroy (server); |
697 | server = NULL; | 697 | server = NULL; |
698 | GNUNET_SIGNAL_handler_uninstall (shc_chld); | ||
699 | shc_chld = NULL; | ||
700 | GNUNET_SCHEDULER_cancel (sched, child_death_task); | 698 | GNUNET_SCHEDULER_cancel (sched, child_death_task); |
701 | child_death_task = GNUNET_SCHEDULER_NO_TASK; | 699 | child_death_task = GNUNET_SCHEDULER_NO_TASK; |
702 | } | 700 | } |
@@ -1039,10 +1037,6 @@ run (void *cls, | |||
1039 | sched = s; | 1037 | sched = s; |
1040 | server = serv; | 1038 | server = serv; |
1041 | GNUNET_assert (serv != NULL); | 1039 | GNUNET_assert (serv != NULL); |
1042 | shc_chld = GNUNET_SIGNAL_handler_install (GNUNET_SIGCHLD, &sighandler_child_death); | ||
1043 | GNUNET_assert (sigpipe == NULL); | ||
1044 | sigpipe = GNUNET_DISK_pipe (GNUNET_NO, GNUNET_NO, GNUNET_NO); | ||
1045 | GNUNET_assert (sigpipe != NULL); | ||
1046 | pr = GNUNET_DISK_pipe_handle (sigpipe, GNUNET_DISK_PIPE_END_READ); | 1040 | pr = GNUNET_DISK_pipe_handle (sigpipe, GNUNET_DISK_PIPE_END_READ); |
1047 | GNUNET_assert (pr != NULL); | 1041 | GNUNET_assert (pr != NULL); |
1048 | GNUNET_SERVER_ignore_shutdown (serv, GNUNET_YES); | 1042 | GNUNET_SERVER_ignore_shutdown (serv, GNUNET_YES); |
@@ -1119,9 +1113,19 @@ run (void *cls, | |||
1119 | int | 1113 | int |
1120 | main (int argc, char *const *argv) | 1114 | main (int argc, char *const *argv) |
1121 | { | 1115 | { |
1122 | return (GNUNET_OK == | 1116 | int ret; |
1123 | GNUNET_SERVICE_run (argc, | 1117 | |
1124 | argv, "arm", GNUNET_YES, &run, NULL)) ? 0 : 1; | 1118 | sigpipe = GNUNET_DISK_pipe (GNUNET_NO, GNUNET_NO, GNUNET_NO); |
1119 | GNUNET_assert (sigpipe != NULL); | ||
1120 | shc_chld = GNUNET_SIGNAL_handler_install (GNUNET_SIGCHLD, &sighandler_child_death); | ||
1121 | ret = (GNUNET_OK == | ||
1122 | GNUNET_SERVICE_run (argc, | ||
1123 | argv, "arm", GNUNET_YES, &run, NULL)) ? 0 : 1; | ||
1124 | GNUNET_SIGNAL_handler_uninstall (shc_chld); | ||
1125 | shc_chld = NULL; | ||
1126 | GNUNET_DISK_pipe_close (sigpipe); | ||
1127 | sigpipe = NULL; | ||
1128 | return ret; | ||
1125 | } | 1129 | } |
1126 | 1130 | ||
1127 | /* end of gnunet-service-arm.c */ | 1131 | /* end of gnunet-service-arm.c */ |