diff options
Diffstat (limited to 'src/fs/gnunet-service-fs_cp.c')
-rw-r--r-- | src/fs/gnunet-service-fs_cp.c | 43 |
1 files changed, 20 insertions, 23 deletions
diff --git a/src/fs/gnunet-service-fs_cp.c b/src/fs/gnunet-service-fs_cp.c index e916a73a8..53838a542 100644 --- a/src/fs/gnunet-service-fs_cp.c +++ b/src/fs/gnunet-service-fs_cp.c | |||
@@ -335,6 +335,11 @@ static struct GNUNET_CONTAINER_MultiPeerMap *cp_map; | |||
335 | */ | 335 | */ |
336 | static struct GNUNET_PEERSTORE_Handle *peerstore; | 336 | static struct GNUNET_PEERSTORE_Handle *peerstore; |
337 | 337 | ||
338 | /** | ||
339 | * Task used to flush respect values to disk. | ||
340 | */ | ||
341 | static struct GNUNET_SCHEDULER_Task *fr_task; | ||
342 | |||
338 | 343 | ||
339 | /** | 344 | /** |
340 | * Update the latency information kept for the given peer. | 345 | * Update the latency information kept for the given peer. |
@@ -876,19 +881,11 @@ transmit_delayed_now (void *cls) | |||
876 | { | 881 | { |
877 | struct GSF_DelayedHandle *dh = cls; | 882 | struct GSF_DelayedHandle *dh = cls; |
878 | struct GSF_ConnectedPeer *cp = dh->cp; | 883 | struct GSF_ConnectedPeer *cp = dh->cp; |
879 | const struct GNUNET_SCHEDULER_TaskContext *tc; | ||
880 | 884 | ||
881 | GNUNET_CONTAINER_DLL_remove (cp->delayed_head, | 885 | GNUNET_CONTAINER_DLL_remove (cp->delayed_head, |
882 | cp->delayed_tail, | 886 | cp->delayed_tail, |
883 | dh); | 887 | dh); |
884 | cp->delay_queue_size--; | 888 | cp->delay_queue_size--; |
885 | tc = GNUNET_SCHEDULER_get_task_context (); | ||
886 | if (0 != (GNUNET_SCHEDULER_REASON_SHUTDOWN & tc->reason)) | ||
887 | { | ||
888 | GNUNET_free (dh->pm); | ||
889 | GNUNET_free (dh); | ||
890 | return; | ||
891 | } | ||
892 | (void) GSF_peer_transmit_ (cp, | 889 | (void) GSF_peer_transmit_ (cp, |
893 | GNUNET_NO, | 890 | GNUNET_NO, |
894 | UINT32_MAX, | 891 | UINT32_MAX, |
@@ -1977,18 +1974,13 @@ GSF_connected_peer_change_preference_ (struct GSF_ConnectedPeer *cp, | |||
1977 | static void | 1974 | static void |
1978 | cron_flush_respect (void *cls) | 1975 | cron_flush_respect (void *cls) |
1979 | { | 1976 | { |
1980 | const struct GNUNET_SCHEDULER_TaskContext *tc; | 1977 | fr_task = NULL; |
1981 | |||
1982 | if (NULL == cp_map) | ||
1983 | return; | ||
1984 | GNUNET_CONTAINER_multipeermap_iterate (cp_map, | 1978 | GNUNET_CONTAINER_multipeermap_iterate (cp_map, |
1985 | &flush_respect, NULL); | 1979 | &flush_respect, |
1986 | tc = GNUNET_SCHEDULER_get_task_context (); | 1980 | NULL); |
1987 | if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN)) | 1981 | fr_task = GNUNET_SCHEDULER_add_delayed_with_priority (RESPECT_FLUSH_FREQ, |
1988 | return; | 1982 | GNUNET_SCHEDULER_PRIORITY_HIGH, |
1989 | GNUNET_SCHEDULER_add_delayed_with_priority (RESPECT_FLUSH_FREQ, | 1983 | &cron_flush_respect, NULL); |
1990 | GNUNET_SCHEDULER_PRIORITY_HIGH, | ||
1991 | &cron_flush_respect, NULL); | ||
1992 | } | 1984 | } |
1993 | 1985 | ||
1994 | 1986 | ||
@@ -2000,8 +1992,8 @@ GSF_connected_peer_init_ () | |||
2000 | { | 1992 | { |
2001 | cp_map = GNUNET_CONTAINER_multipeermap_create (128, GNUNET_YES); | 1993 | cp_map = GNUNET_CONTAINER_multipeermap_create (128, GNUNET_YES); |
2002 | peerstore = GNUNET_PEERSTORE_connect (GSF_cfg); | 1994 | peerstore = GNUNET_PEERSTORE_connect (GSF_cfg); |
2003 | GNUNET_SCHEDULER_add_with_priority (GNUNET_SCHEDULER_PRIORITY_HIGH, | 1995 | fr_task = GNUNET_SCHEDULER_add_with_priority (GNUNET_SCHEDULER_PRIORITY_HIGH, |
2004 | &cron_flush_respect, NULL); | 1996 | &cron_flush_respect, NULL); |
2005 | } | 1997 | } |
2006 | 1998 | ||
2007 | 1999 | ||
@@ -2033,10 +2025,15 @@ GSF_connected_peer_done_ () | |||
2033 | &flush_respect, | 2025 | &flush_respect, |
2034 | NULL); | 2026 | NULL); |
2035 | GNUNET_CONTAINER_multipeermap_iterate (cp_map, | 2027 | GNUNET_CONTAINER_multipeermap_iterate (cp_map, |
2036 | &clean_peer, NULL); | 2028 | &clean_peer, |
2029 | NULL); | ||
2030 | GNUNET_SCHEDULER_cancel (fr_task); | ||
2031 | fr_task = NULL; | ||
2037 | GNUNET_CONTAINER_multipeermap_destroy (cp_map); | 2032 | GNUNET_CONTAINER_multipeermap_destroy (cp_map); |
2038 | cp_map = NULL; | 2033 | cp_map = NULL; |
2039 | GNUNET_PEERSTORE_disconnect (peerstore, GNUNET_YES); | 2034 | GNUNET_PEERSTORE_disconnect (peerstore, |
2035 | GNUNET_YES); | ||
2036 | |||
2040 | } | 2037 | } |
2041 | 2038 | ||
2042 | 2039 | ||