diff options
author | Christian Grothoff <christian@grothoff.org> | 2010-05-06 13:02:14 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2010-05-06 13:02:14 +0000 |
commit | 0b41a005a697d23fedef619df03597e6c308a6c1 (patch) | |
tree | 4496ec441facf994a3d025098e6f45d5504cdd89 /src/fs/fs.c | |
parent | bd8e94679cb54749ae9574e37a86dfb445c1c9af (diff) | |
download | gnunet-0b41a005a697d23fedef619df03597e6c308a6c1.tar.gz gnunet-0b41a005a697d23fedef619df03597e6c308a6c1.zip |
bugfixes
Diffstat (limited to 'src/fs/fs.c')
-rw-r--r-- | src/fs/fs.c | 56 |
1 files changed, 38 insertions, 18 deletions
diff --git a/src/fs/fs.c b/src/fs/fs.c index 58045591e..78d29dff1 100644 --- a/src/fs/fs.c +++ b/src/fs/fs.c | |||
@@ -529,9 +529,7 @@ get_write_handle (struct GNUNET_FS_Handle *h, | |||
529 | } | 529 | } |
530 | ret = GNUNET_BIO_write_open (fn); | 530 | ret = GNUNET_BIO_write_open (fn); |
531 | if (ret == NULL) | 531 | if (ret == NULL) |
532 | fprintf (stderr, | 532 | GNUNET_break (0); |
533 | "Failed to create write handle for `%s' from `%s/%s'\n", | ||
534 | fn, ext, ent); | ||
535 | GNUNET_free (fn); | 533 | GNUNET_free (fn); |
536 | return ret; | 534 | return ret; |
537 | } | 535 | } |
@@ -1671,11 +1669,13 @@ count_download_requests (void *cls, | |||
1671 | * | 1669 | * |
1672 | * @param dc download context to compute for | 1670 | * @param dc download context to compute for |
1673 | * @param uni unique filename to use, use "" for the directory name | 1671 | * @param uni unique filename to use, use "" for the directory name |
1672 | * @param ext extension to use, use ".dir" for our own subdirectory | ||
1674 | * @return the expanded file name, NULL for none | 1673 | * @return the expanded file name, NULL for none |
1675 | */ | 1674 | */ |
1676 | static char * | 1675 | static char * |
1677 | get_download_sync_filename (struct GNUNET_FS_DownloadContext *dc, | 1676 | get_download_sync_filename (struct GNUNET_FS_DownloadContext *dc, |
1678 | const char *uni) | 1677 | const char *uni, |
1678 | const char *ext) | ||
1679 | { | 1679 | { |
1680 | char *par; | 1680 | char *par; |
1681 | char *epar; | 1681 | char *epar; |
@@ -1688,14 +1688,15 @@ get_download_sync_filename (struct GNUNET_FS_DownloadContext *dc, | |||
1688 | uni); | 1688 | uni); |
1689 | if (dc->parent->serialization == NULL) | 1689 | if (dc->parent->serialization == NULL) |
1690 | return NULL; | 1690 | return NULL; |
1691 | par = get_download_sync_filename (dc->parent, dc->parent->serialization); | 1691 | par = get_download_sync_filename (dc->parent, dc->parent->serialization, ""); |
1692 | if (par == NULL) | 1692 | if (par == NULL) |
1693 | return NULL; | 1693 | return NULL; |
1694 | GNUNET_asprintf (&epar, | 1694 | GNUNET_asprintf (&epar, |
1695 | "%s.dir%s%s", | 1695 | "%s.dir%s%s%s", |
1696 | par, | 1696 | par, |
1697 | DIR_SEPARATOR_STR, | 1697 | DIR_SEPARATOR_STR, |
1698 | uni); | 1698 | uni, |
1699 | ext); | ||
1699 | GNUNET_free (par); | 1700 | GNUNET_free (par); |
1700 | return epar; | 1701 | return epar; |
1701 | } | 1702 | } |
@@ -1720,7 +1721,7 @@ GNUNET_FS_download_sync_ (struct GNUNET_FS_DownloadContext *dc) | |||
1720 | 1721 | ||
1721 | if (NULL == dc->serialization) | 1722 | if (NULL == dc->serialization) |
1722 | { | 1723 | { |
1723 | dir = get_download_sync_filename (dc, ""); | 1724 | dir = get_download_sync_filename (dc, "", ""); |
1724 | if (dir == NULL) | 1725 | if (dir == NULL) |
1725 | return; | 1726 | return; |
1726 | if (GNUNET_OK != | 1727 | if (GNUNET_OK != |
@@ -1735,7 +1736,7 @@ GNUNET_FS_download_sync_ (struct GNUNET_FS_DownloadContext *dc) | |||
1735 | } | 1736 | } |
1736 | else | 1737 | else |
1737 | { | 1738 | { |
1738 | fn = get_download_sync_filename (dc, dc->serialization); | 1739 | fn = get_download_sync_filename (dc, dc->serialization, ""); |
1739 | } | 1740 | } |
1740 | wh = GNUNET_BIO_write_open (fn); | 1741 | wh = GNUNET_BIO_write_open (fn); |
1741 | if (wh == NULL) | 1742 | if (wh == NULL) |
@@ -2440,6 +2441,15 @@ deserialize_subdownload (void *cls, | |||
2440 | 2441 | ||
2441 | ser = get_serialization_short_name (filename); | 2442 | ser = get_serialization_short_name (filename); |
2442 | rh = GNUNET_BIO_read_open (filename); | 2443 | rh = GNUNET_BIO_read_open (filename); |
2444 | if (rh == NULL) | ||
2445 | { | ||
2446 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | ||
2447 | _("Failed to resume sub-download `%s': could not open file `%s'\n"), | ||
2448 | ser, | ||
2449 | filename); | ||
2450 | GNUNET_free (ser); | ||
2451 | return GNUNET_OK; | ||
2452 | } | ||
2443 | deserialize_download (parent->h, | 2453 | deserialize_download (parent->h, |
2444 | rh, | 2454 | rh, |
2445 | parent, | 2455 | parent, |
@@ -2591,9 +2601,14 @@ deserialize_download (struct GNUNET_FS_Handle *h, | |||
2591 | dr->is_pending = GNUNET_YES; | 2601 | dr->is_pending = GNUNET_YES; |
2592 | dr->next = dc->pending; | 2602 | dr->next = dc->pending; |
2593 | dc->pending = dr; | 2603 | dc->pending = dr; |
2604 | GNUNET_CONTAINER_multihashmap_put (dc->active, | ||
2605 | &dr->chk.query, | ||
2606 | dr, | ||
2607 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE); | ||
2608 | |||
2594 | dr = NULL; | 2609 | dr = NULL; |
2595 | } | 2610 | } |
2596 | dn = get_download_sync_filename (dc, ""); | 2611 | dn = get_download_sync_filename (dc, dc->serialization, ".dir"); |
2597 | if (dn != NULL) | 2612 | if (dn != NULL) |
2598 | { | 2613 | { |
2599 | if (GNUNET_YES == | 2614 | if (GNUNET_YES == |
@@ -2602,20 +2617,25 @@ deserialize_download (struct GNUNET_FS_Handle *h, | |||
2602 | GNUNET_free (dn); | 2617 | GNUNET_free (dn); |
2603 | } | 2618 | } |
2604 | if (parent != NULL) | 2619 | if (parent != NULL) |
2605 | GNUNET_CONTAINER_DLL_insert (parent->child_head, | 2620 | { |
2606 | parent->child_tail, | 2621 | abort (); // for debugging for now |
2607 | dc); | 2622 | GNUNET_CONTAINER_DLL_insert (parent->child_head, |
2623 | parent->child_tail, | ||
2624 | dc); | ||
2625 | } | ||
2608 | if (search != NULL) | 2626 | if (search != NULL) |
2609 | { | 2627 | { |
2610 | dc->search = search; | 2628 | dc->search = search; |
2611 | search->download = dc; | 2629 | search->download = dc; |
2612 | } | 2630 | } |
2613 | if ( (parent == NULL) || | 2631 | if ( (parent == NULL) && |
2614 | (search == NULL) ) | 2632 | (search == NULL) ) |
2615 | dc->top = GNUNET_FS_make_top (dc->h, | 2633 | { |
2616 | &GNUNET_FS_download_signal_suspend_, | 2634 | dc->top = GNUNET_FS_make_top (dc->h, |
2617 | dc); | 2635 | &GNUNET_FS_download_signal_suspend_, |
2618 | signal_download_resume (dc); | 2636 | dc); |
2637 | signal_download_resume (dc); | ||
2638 | } | ||
2619 | GNUNET_free (uris); | 2639 | GNUNET_free (uris); |
2620 | return; | 2640 | return; |
2621 | cleanup: | 2641 | cleanup: |