diff options
author | Christian Grothoff <christian@grothoff.org> | 2009-11-04 15:43:09 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2009-11-04 15:43:09 +0000 |
commit | 9b20dceb26e1bae0feea2df03412da153bba619c (patch) | |
tree | 8a0cd24d717ad155c1277e6fbcc357b2ae0586eb /src/topology | |
parent | 0e1db619d8621ed62d9798398bce8f3121c3f5ae (diff) | |
download | gnunet-9b20dceb26e1bae0feea2df03412da153bba619c.tar.gz gnunet-9b20dceb26e1bae0feea2df03412da153bba619c.zip |
fixing core API for early shutdown handling
Diffstat (limited to 'src/topology')
-rw-r--r-- | src/topology/gnunet-daemon-topology.c | 47 |
1 files changed, 33 insertions, 14 deletions
diff --git a/src/topology/gnunet-daemon-topology.c b/src/topology/gnunet-daemon-topology.c index cdf3da809..be6f272be 100644 --- a/src/topology/gnunet-daemon-topology.c +++ b/src/topology/gnunet-daemon-topology.c | |||
@@ -809,6 +809,7 @@ core_init (void *cls, | |||
809 | { | 809 | { |
810 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | 810 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, |
811 | _("Failed to connect to core service, can not manage topology!\n")); | 811 | _("Failed to connect to core service, can not manage topology!\n")); |
812 | GNUNET_SCHEDULER_shutdown (sched); | ||
812 | return; | 813 | return; |
813 | } | 814 | } |
814 | handle = server; | 815 | handle = server; |
@@ -1136,8 +1137,11 @@ cleaning_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
1136 | 1137 | ||
1137 | GNUNET_TRANSPORT_disconnect (transport); | 1138 | GNUNET_TRANSPORT_disconnect (transport); |
1138 | transport = NULL; | 1139 | transport = NULL; |
1139 | GNUNET_CORE_disconnect (handle); | 1140 | if (handle != NULL) |
1140 | handle = NULL; | 1141 | { |
1142 | GNUNET_CORE_disconnect (handle); | ||
1143 | handle = NULL; | ||
1144 | } | ||
1141 | while (NULL != (pl = friends)) | 1145 | while (NULL != (pl = friends)) |
1142 | { | 1146 | { |
1143 | friends = pl->next; | 1147 | friends = pl->next; |
@@ -1208,21 +1212,36 @@ run (void *cls, | |||
1208 | NULL, | 1212 | NULL, |
1209 | NULL, | 1213 | NULL, |
1210 | NULL); | 1214 | NULL); |
1211 | GNUNET_CORE_connect (sched, | 1215 | handle = GNUNET_CORE_connect (sched, |
1212 | cfg, | 1216 | cfg, |
1213 | GNUNET_TIME_UNIT_FOREVER_REL, | 1217 | GNUNET_TIME_UNIT_FOREVER_REL, |
1214 | NULL, | 1218 | NULL, |
1215 | &core_init, | 1219 | &core_init, |
1216 | &connect_notify, | 1220 | &connect_notify, |
1217 | &disconnect_notify, | 1221 | &disconnect_notify, |
1218 | &hello_advertising, | 1222 | &hello_advertising, |
1219 | NULL, GNUNET_NO, | 1223 | NULL, GNUNET_NO, |
1220 | NULL, GNUNET_NO, | 1224 | NULL, GNUNET_NO, |
1221 | handlers); | 1225 | handlers); |
1222 | |||
1223 | GNUNET_SCHEDULER_add_delayed (sched, | 1226 | GNUNET_SCHEDULER_add_delayed (sched, |
1224 | GNUNET_TIME_UNIT_FOREVER_REL, | 1227 | GNUNET_TIME_UNIT_FOREVER_REL, |
1225 | &cleaning_task, NULL); | 1228 | &cleaning_task, NULL); |
1229 | if (NULL == transport) | ||
1230 | { | ||
1231 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | ||
1232 | _("Failed to connect to `%s' service.\n"), | ||
1233 | "transport"); | ||
1234 | GNUNET_SCHEDULER_shutdown (sched); | ||
1235 | return; | ||
1236 | } | ||
1237 | if (NULL == handle) | ||
1238 | { | ||
1239 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | ||
1240 | _("Failed to connect to `%s' service.\n"), | ||
1241 | "core"); | ||
1242 | GNUNET_SCHEDULER_shutdown (sched); | ||
1243 | return; | ||
1244 | } | ||
1226 | } | 1245 | } |
1227 | 1246 | ||
1228 | 1247 | ||