diff options
Diffstat (limited to 'src/fs')
-rw-r--r-- | src/fs/fs.h | 5 | ||||
-rw-r--r-- | src/fs/fs_download.c | 19 |
2 files changed, 16 insertions, 8 deletions
diff --git a/src/fs/fs.h b/src/fs/fs.h index 8fa0ef0aa..954fe0599 100644 --- a/src/fs/fs.h +++ b/src/fs/fs.h | |||
@@ -1980,6 +1980,11 @@ struct GNUNET_FS_DownloadContext | |||
1980 | */ | 1980 | */ |
1981 | int has_finished; | 1981 | int has_finished; |
1982 | 1982 | ||
1983 | /** | ||
1984 | * Have we started the receive continuation yet? | ||
1985 | */ | ||
1986 | int in_receive; | ||
1987 | |||
1983 | }; | 1988 | }; |
1984 | 1989 | ||
1985 | 1990 | ||
diff --git a/src/fs/fs_download.c b/src/fs/fs_download.c index 732b3c43a..1565f9a3d 100644 --- a/src/fs/fs_download.c +++ b/src/fs/fs_download.c | |||
@@ -1298,6 +1298,7 @@ process_result_with_request (void *cls, | |||
1298 | dc->th = NULL; | 1298 | dc->th = NULL; |
1299 | } | 1299 | } |
1300 | GNUNET_CLIENT_disconnect (dc->client, GNUNET_NO); | 1300 | GNUNET_CLIENT_disconnect (dc->client, GNUNET_NO); |
1301 | dc->in_receive = GNUNET_NO; | ||
1301 | dc->client = NULL; | 1302 | dc->client = NULL; |
1302 | GNUNET_FS_free_download_request_ (dc->top_request); | 1303 | GNUNET_FS_free_download_request_ (dc->top_request); |
1303 | dc->top_request = NULL; | 1304 | dc->top_request = NULL; |
@@ -1459,6 +1460,14 @@ transmit_download_request (void *cls, | |||
1459 | dc); | 1460 | dc); |
1460 | GNUNET_assert (dc->th != NULL); | 1461 | GNUNET_assert (dc->th != NULL); |
1461 | } | 1462 | } |
1463 | if (GNUNET_NO == dc->in_receive) | ||
1464 | { | ||
1465 | dc->in_receive = GNUNET_YES; | ||
1466 | GNUNET_CLIENT_receive (dc->client, | ||
1467 | &receive_results, | ||
1468 | dc, | ||
1469 | GNUNET_TIME_UNIT_FOREVER_REL); | ||
1470 | } | ||
1462 | return msize; | 1471 | return msize; |
1463 | } | 1472 | } |
1464 | 1473 | ||
@@ -1498,10 +1507,6 @@ do_reconnect (void *cls, | |||
1498 | dc); | 1507 | dc); |
1499 | GNUNET_assert (dc->th != NULL); | 1508 | GNUNET_assert (dc->th != NULL); |
1500 | } | 1509 | } |
1501 | GNUNET_CLIENT_receive (client, | ||
1502 | &receive_results, | ||
1503 | dc, | ||
1504 | GNUNET_TIME_UNIT_FOREVER_REL); | ||
1505 | } | 1510 | } |
1506 | 1511 | ||
1507 | 1512 | ||
@@ -1560,6 +1565,7 @@ try_reconnect (struct GNUNET_FS_DownloadContext *dc) | |||
1560 | &retry_entry, | 1565 | &retry_entry, |
1561 | dc); | 1566 | dc); |
1562 | GNUNET_CLIENT_disconnect (dc->client, GNUNET_NO); | 1567 | GNUNET_CLIENT_disconnect (dc->client, GNUNET_NO); |
1568 | dc->in_receive = GNUNET_NO; | ||
1563 | dc->client = NULL; | 1569 | dc->client = NULL; |
1564 | } | 1570 | } |
1565 | #if DEBUG_DOWNLOAD | 1571 | #if DEBUG_DOWNLOAD |
@@ -1594,10 +1600,6 @@ activate_fs_download (void *cls, | |||
1594 | GNUNET_assert (dc->client == NULL); | 1600 | GNUNET_assert (dc->client == NULL); |
1595 | GNUNET_assert (dc->th == NULL); | 1601 | GNUNET_assert (dc->th == NULL); |
1596 | dc->client = client; | 1602 | dc->client = client; |
1597 | GNUNET_CLIENT_receive (client, | ||
1598 | &receive_results, | ||
1599 | dc, | ||
1600 | GNUNET_TIME_UNIT_FOREVER_REL); | ||
1601 | pi.status = GNUNET_FS_STATUS_DOWNLOAD_ACTIVE; | 1603 | pi.status = GNUNET_FS_STATUS_DOWNLOAD_ACTIVE; |
1602 | GNUNET_FS_download_make_status_ (&pi, dc); | 1604 | GNUNET_FS_download_make_status_ (&pi, dc); |
1603 | dc->pending_head = NULL; | 1605 | dc->pending_head = NULL; |
@@ -1645,6 +1647,7 @@ deactivate_fs_download (void *cls) | |||
1645 | if (NULL != dc->client) | 1647 | if (NULL != dc->client) |
1646 | { | 1648 | { |
1647 | GNUNET_CLIENT_disconnect (dc->client, GNUNET_NO); | 1649 | GNUNET_CLIENT_disconnect (dc->client, GNUNET_NO); |
1650 | dc->in_receive = GNUNET_NO; | ||
1648 | dc->client = NULL; | 1651 | dc->client = NULL; |
1649 | } | 1652 | } |
1650 | dc->pending_head = NULL; | 1653 | dc->pending_head = NULL; |