aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2011-05-05 13:03:19 +0000
committerChristian Grothoff <christian@grothoff.org>2011-05-05 13:03:19 +0000
commitf0006804b21f73d0dac544f4eac00318d20d8caa (patch)
tree6c1cf16fb872b85cfc88055e6cf8322f0f1a1dbc
parentb6910539506756f3006042971ead1ffd8e8e54fe (diff)
downloadgnunet-f0006804b21f73d0dac544f4eac00318d20d8caa.tar.gz
gnunet-f0006804b21f73d0dac544f4eac00318d20d8caa.zip
fix
-rw-r--r--src/fs/fs.h5
-rw-r--r--src/fs/fs_download.c19
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;