aboutsummaryrefslogtreecommitdiff
path: root/src/fs/fs_publish.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2010-05-14 15:35:57 +0000
committerChristian Grothoff <christian@grothoff.org>2010-05-14 15:35:57 +0000
commita1b9bb7410e9c41e0b96eb70a54f06cebdc42258 (patch)
tree4206fe48243bb8dce1cf41a5d61bc5b6302c2d30 /src/fs/fs_publish.c
parent4062de42eec444eeb6803ace0877d6e3c61ae3cd (diff)
downloadgnunet-a1b9bb7410e9c41e0b96eb70a54f06cebdc42258.tar.gz
gnunet-a1b9bb7410e9c41e0b96eb70a54f06cebdc42258.zip
fixes
Diffstat (limited to 'src/fs/fs_publish.c')
-rw-r--r--src/fs/fs_publish.c49
1 files changed, 35 insertions, 14 deletions
diff --git a/src/fs/fs_publish.c b/src/fs/fs_publish.c
index 4e2039ba0..4d93579bd 100644
--- a/src/fs/fs_publish.c
+++ b/src/fs/fs_publish.c
@@ -117,6 +117,7 @@ publish_cleanup (void *cls,
117 const struct GNUNET_SCHEDULER_TaskContext *tc) 117 const struct GNUNET_SCHEDULER_TaskContext *tc)
118{ 118{
119 struct GNUNET_FS_PublishContext *pc = cls; 119 struct GNUNET_FS_PublishContext *pc = cls;
120
120 GNUNET_FS_file_information_destroy (pc->fi, NULL, NULL); 121 GNUNET_FS_file_information_destroy (pc->fi, NULL, NULL);
121 if (pc->namespace != NULL) 122 if (pc->namespace != NULL)
122 GNUNET_FS_namespace_delete (pc->namespace, GNUNET_NO); 123 GNUNET_FS_namespace_delete (pc->namespace, GNUNET_NO);
@@ -124,7 +125,10 @@ publish_cleanup (void *cls,
124 GNUNET_free_non_null (pc->nuid); 125 GNUNET_free_non_null (pc->nuid);
125 GNUNET_free_non_null (pc->serialization); 126 GNUNET_free_non_null (pc->serialization);
126 if (pc->dsh != NULL) 127 if (pc->dsh != NULL)
127 GNUNET_DATASTORE_disconnect (pc->dsh, GNUNET_NO); 128 {
129 GNUNET_DATASTORE_disconnect (pc->dsh, GNUNET_NO);
130 pc->dsh = NULL;
131 }
128 if (pc->client != NULL) 132 if (pc->client != NULL)
129 GNUNET_CLIENT_disconnect (pc->client, GNUNET_NO); 133 GNUNET_CLIENT_disconnect (pc->client, GNUNET_NO);
130 GNUNET_free (pc); 134 GNUNET_free (pc);
@@ -997,6 +1001,11 @@ fip_signal_suspend(void *cls,
997 pi.status = GNUNET_FS_STATUS_PUBLISH_SUSPEND; 1001 pi.status = GNUNET_FS_STATUS_PUBLISH_SUSPEND;
998 GNUNET_break (NULL == GNUNET_FS_publish_make_status_ (&pi, sc, fi, off)); 1002 GNUNET_break (NULL == GNUNET_FS_publish_make_status_ (&pi, sc, fi, off));
999 *client_info = NULL; 1003 *client_info = NULL;
1004 if (NULL != sc->dsh)
1005 {
1006 GNUNET_DATASTORE_disconnect (sc->dsh, GNUNET_NO);
1007 sc->dsh = NULL;
1008 }
1000 return GNUNET_OK; 1009 return GNUNET_OK;
1001} 1010}
1002 1011
@@ -1021,12 +1030,10 @@ GNUNET_FS_publish_signal_suspend_ (void *cls)
1021 &fip_signal_suspend, 1030 &fip_signal_suspend,
1022 pc); 1031 pc);
1023 GNUNET_FS_end_top (pc->h, pc->top); 1032 GNUNET_FS_end_top (pc->h, pc->top);
1024 GNUNET_SCHEDULER_add_continuation (pc->h->sched, 1033 publish_cleanup (pc, NULL);
1025 &publish_cleanup,
1026 pc,
1027 GNUNET_SCHEDULER_REASON_PREREQ_DONE);
1028} 1034}
1029 1035
1036
1030/** 1037/**
1031 * Publish a file or directory. 1038 * Publish a file or directory.
1032 * 1039 *
@@ -1152,6 +1159,11 @@ void
1152GNUNET_FS_publish_stop (struct GNUNET_FS_PublishContext *pc) 1159GNUNET_FS_publish_stop (struct GNUNET_FS_PublishContext *pc)
1153{ 1160{
1154 GNUNET_FS_end_top (pc->h, pc->top); 1161 GNUNET_FS_end_top (pc->h, pc->top);
1162 if (NULL != pc->dsh)
1163 {
1164 GNUNET_DATASTORE_disconnect (pc->dsh, GNUNET_NO);
1165 pc->dsh = NULL;
1166 }
1155 if (GNUNET_SCHEDULER_NO_TASK != pc->upload_task) 1167 if (GNUNET_SCHEDULER_NO_TASK != pc->upload_task)
1156 { 1168 {
1157 GNUNET_SCHEDULER_cancel (pc->h->sched, pc->upload_task); 1169 GNUNET_SCHEDULER_cancel (pc->h->sched, pc->upload_task);
@@ -1171,10 +1183,7 @@ GNUNET_FS_publish_stop (struct GNUNET_FS_PublishContext *pc)
1171 pc->in_network_wait = GNUNET_SYSERR; 1183 pc->in_network_wait = GNUNET_SYSERR;
1172 return; 1184 return;
1173 } 1185 }
1174 GNUNET_SCHEDULER_add_continuation (pc->h->sched, 1186 publish_cleanup (pc, NULL);
1175 &publish_cleanup,
1176 pc,
1177 GNUNET_SCHEDULER_REASON_PREREQ_DONE);
1178} 1187}
1179 1188
1180 1189
@@ -1285,7 +1294,11 @@ kb_put_cont (void *cls,
1285 1294
1286 if (GNUNET_OK != success) 1295 if (GNUNET_OK != success)
1287 { 1296 {
1288 GNUNET_DATASTORE_disconnect (pkc->dsh, GNUNET_NO); 1297 if (NULL != pkc->dsh)
1298 {
1299 GNUNET_DATASTORE_disconnect (pkc->dsh, GNUNET_NO);
1300 pkc->dsh = NULL;
1301 }
1289 GNUNET_free (pkc->cpy); 1302 GNUNET_free (pkc->cpy);
1290 GNUNET_free (pkc->kb); 1303 GNUNET_free (pkc->kb);
1291 pkc->cont (pkc->cont_cls, 1304 pkc->cont (pkc->cont_cls,
@@ -1326,7 +1339,10 @@ publish_ksk_cont (void *cls,
1326 (NULL == pkc->dsh) ) 1339 (NULL == pkc->dsh) )
1327 { 1340 {
1328 if (NULL != pkc->dsh) 1341 if (NULL != pkc->dsh)
1329 GNUNET_DATASTORE_disconnect (pkc->dsh, GNUNET_NO); 1342 {
1343 GNUNET_DATASTORE_disconnect (pkc->dsh, GNUNET_NO);
1344 pkc->dsh = NULL;
1345 }
1330 GNUNET_free (pkc->cpy); 1346 GNUNET_free (pkc->cpy);
1331 GNUNET_free (pkc->kb); 1347 GNUNET_free (pkc->kb);
1332 pkc->cont (pkc->cont_cls, 1348 pkc->cont (pkc->cont_cls,
@@ -1452,7 +1468,10 @@ GNUNET_FS_publish_ksk (struct GNUNET_FS_Handle *h,
1452 GNUNET_break (0); 1468 GNUNET_break (0);
1453 GNUNET_free (pkc->kb); 1469 GNUNET_free (pkc->kb);
1454 if (pkc->dsh != NULL) 1470 if (pkc->dsh != NULL)
1455 GNUNET_DATASTORE_disconnect (pkc->dsh, GNUNET_NO); 1471 {
1472 GNUNET_DATASTORE_disconnect (pkc->dsh, GNUNET_NO);
1473 pkc->dsh = NULL;
1474 }
1456 cont (cont_cls, NULL, _("Internal error.")); 1475 cont (cont_cls, NULL, _("Internal error."));
1457 GNUNET_free (pkc); 1476 GNUNET_free (pkc);
1458 return; 1477 return;
@@ -1518,7 +1537,10 @@ sb_put_cont (void *cls,
1518 struct PublishSksContext *psc = cls; 1537 struct PublishSksContext *psc = cls;
1519 1538
1520 if (NULL != psc->dsh) 1539 if (NULL != psc->dsh)
1521 GNUNET_DATASTORE_disconnect (psc->dsh, GNUNET_NO); 1540 {
1541 GNUNET_DATASTORE_disconnect (psc->dsh, GNUNET_NO);
1542 psc->dsh = NULL;
1543 }
1522 if (GNUNET_OK != success) 1544 if (GNUNET_OK != success)
1523 psc->cont (psc->cont_cls, 1545 psc->cont (psc->cont_cls,
1524 NULL, 1546 NULL,
@@ -1685,7 +1707,6 @@ GNUNET_FS_publish_sks (struct GNUNET_FS_Handle *h,
1685 GNUNET_CONSTANTS_SERVICE_TIMEOUT, 1707 GNUNET_CONSTANTS_SERVICE_TIMEOUT,
1686 &sb_put_cont, 1708 &sb_put_cont,
1687 psc); 1709 psc);
1688
1689 GNUNET_free (sb); 1710 GNUNET_free (sb);
1690 GNUNET_free (sb_enc); 1711 GNUNET_free (sb_enc);
1691} 1712}