aboutsummaryrefslogtreecommitdiff
path: root/src/topology
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2009-11-04 15:43:09 +0000
committerChristian Grothoff <christian@grothoff.org>2009-11-04 15:43:09 +0000
commit9b20dceb26e1bae0feea2df03412da153bba619c (patch)
tree8a0cd24d717ad155c1277e6fbcc357b2ae0586eb /src/topology
parent0e1db619d8621ed62d9798398bce8f3121c3f5ae (diff)
downloadgnunet-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.c47
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