diff options
author | Christian Grothoff <christian@grothoff.org> | 2010-05-14 15:35:57 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2010-05-14 15:35:57 +0000 |
commit | a1b9bb7410e9c41e0b96eb70a54f06cebdc42258 (patch) | |
tree | 4206fe48243bb8dce1cf41a5d61bc5b6302c2d30 /src/fs/fs_publish.c | |
parent | 4062de42eec444eeb6803ace0877d6e3c61ae3cd (diff) | |
download | gnunet-a1b9bb7410e9c41e0b96eb70a54f06cebdc42258.tar.gz gnunet-a1b9bb7410e9c41e0b96eb70a54f06cebdc42258.zip |
fixes
Diffstat (limited to 'src/fs/fs_publish.c')
-rw-r--r-- | src/fs/fs_publish.c | 49 |
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 | |||
1152 | GNUNET_FS_publish_stop (struct GNUNET_FS_PublishContext *pc) | 1159 | GNUNET_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 | } |