aboutsummaryrefslogtreecommitdiff
path: root/src/cadet/gnunet-service-cadet_connection.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cadet/gnunet-service-cadet_connection.c')
-rw-r--r--src/cadet/gnunet-service-cadet_connection.c51
1 files changed, 10 insertions, 41 deletions
diff --git a/src/cadet/gnunet-service-cadet_connection.c b/src/cadet/gnunet-service-cadet_connection.c
index d11368a79..188041feb 100644
--- a/src/cadet/gnunet-service-cadet_connection.c
+++ b/src/cadet/gnunet-service-cadet_connection.c
@@ -1192,11 +1192,10 @@ connection_maintain (struct CadetConnection *c, int fwd)
1192 * 1192 *
1193 * @param c Connection to keep alive. 1193 * @param c Connection to keep alive.
1194 * @param fwd Direction. 1194 * @param fwd Direction.
1195 * @param shutdown Are we shutting down? (Don't send traffic)
1196 * Non-zero value for true, not necessarily GNUNET_YES.
1197 */ 1195 */
1198static void 1196static void
1199connection_keepalive (struct CadetConnection *c, int fwd, int shutdown) 1197connection_keepalive (struct CadetConnection *c,
1198 int fwd)
1200{ 1199{
1201 GCC_check_connections (); 1200 GCC_check_connections ();
1202 LOG (GNUNET_ERROR_TYPE_DEBUG, 1201 LOG (GNUNET_ERROR_TYPE_DEBUG,
@@ -1207,10 +1206,6 @@ connection_keepalive (struct CadetConnection *c, int fwd, int shutdown)
1207 c->fwd_maintenance_task = NULL; 1206 c->fwd_maintenance_task = NULL;
1208 else 1207 else
1209 c->bck_maintenance_task = NULL; 1208 c->bck_maintenance_task = NULL;
1210
1211 if (GNUNET_NO != shutdown)
1212 return;
1213
1214 connection_maintain (c, fwd); 1209 connection_maintain (c, fwd);
1215 GCC_check_connections (); 1210 GCC_check_connections ();
1216 /* Next execution will be scheduled by message_sent or _maintain*/ 1211 /* Next execution will be scheduled by message_sent or _maintain*/
@@ -1225,13 +1220,11 @@ connection_keepalive (struct CadetConnection *c, int fwd, int shutdown)
1225static void 1220static void
1226connection_fwd_keepalive (void *cls) 1221connection_fwd_keepalive (void *cls)
1227{ 1222{
1228 const struct GNUNET_SCHEDULER_TaskContext *tc; 1223 struct CadetConnection *c = cls;
1229 1224
1230 GCC_check_connections (); 1225 GCC_check_connections ();
1231 tc = GNUNET_SCHEDULER_get_task_context (); 1226 connection_keepalive (c,
1232 connection_keepalive ((struct CadetConnection *) cls, 1227 GNUNET_YES);
1233 GNUNET_YES,
1234 tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN);
1235 GCC_check_connections (); 1228 GCC_check_connections ();
1236} 1229}
1237 1230
@@ -1244,13 +1237,11 @@ connection_fwd_keepalive (void *cls)
1244static void 1237static void
1245connection_bck_keepalive (void *cls) 1238connection_bck_keepalive (void *cls)
1246{ 1239{
1247 const struct GNUNET_SCHEDULER_TaskContext *tc; 1240 struct CadetConnection *c = cls;
1248 1241
1249 GCC_check_connections (); 1242 GCC_check_connections ();
1250 tc = GNUNET_SCHEDULER_get_task_context (); 1243 connection_keepalive (c,
1251 connection_keepalive ((struct CadetConnection *) cls, 1244 GNUNET_NO);
1252 GNUNET_NO,
1253 tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN);
1254 GCC_check_connections (); 1245 GCC_check_connections ();
1255} 1246}
1256 1247
@@ -1461,16 +1452,9 @@ connection_poll (void *cls)
1461 struct GNUNET_CADET_Poll msg; 1452 struct GNUNET_CADET_Poll msg;
1462 struct CadetConnection *c; 1453 struct CadetConnection *c;
1463 int fwd; 1454 int fwd;
1464 const struct GNUNET_SCHEDULER_TaskContext *tc;
1465 1455
1466 fc->poll_task = NULL; 1456 fc->poll_task = NULL;
1467 GCC_check_connections (); 1457 GCC_check_connections ();
1468 tc = GNUNET_SCHEDULER_get_task_context ();
1469 if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN))
1470 {
1471 return;
1472 }
1473
1474 c = fc->c; 1458 c = fc->c;
1475 fwd = fc == &c->fwd_fc; 1459 fwd = fc == &c->fwd_fc;
1476 LOG (GNUNET_ERROR_TYPE_DEBUG, "Polling connection %s %s\n", 1460 LOG (GNUNET_ERROR_TYPE_DEBUG, "Polling connection %s %s\n",
@@ -1592,12 +1576,8 @@ static void
1592connection_fwd_timeout (void *cls) 1576connection_fwd_timeout (void *cls)
1593{ 1577{
1594 struct CadetConnection *c = cls; 1578 struct CadetConnection *c = cls;
1595 const struct GNUNET_SCHEDULER_TaskContext *tc;
1596 1579
1597 c->fwd_maintenance_task = NULL; 1580 c->fwd_maintenance_task = NULL;
1598 tc = GNUNET_SCHEDULER_get_task_context ();
1599 if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN))
1600 return;
1601 GCC_check_connections (); 1581 GCC_check_connections ();
1602 connection_timeout (c, GNUNET_YES); 1582 connection_timeout (c, GNUNET_YES);
1603 GCC_check_connections (); 1583 GCC_check_connections ();
@@ -1614,12 +1594,8 @@ static void
1614connection_bck_timeout (void *cls) 1594connection_bck_timeout (void *cls)
1615{ 1595{
1616 struct CadetConnection *c = cls; 1596 struct CadetConnection *c = cls;
1617 const struct GNUNET_SCHEDULER_TaskContext *tc;
1618 1597
1619 c->bck_maintenance_task = NULL; 1598 c->bck_maintenance_task = NULL;
1620 tc = GNUNET_SCHEDULER_get_task_context ();
1621 if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN))
1622 return;
1623 GCC_check_connections (); 1599 GCC_check_connections ();
1624 connection_timeout (c, GNUNET_NO); 1600 connection_timeout (c, GNUNET_NO);
1625 GCC_check_connections (); 1601 GCC_check_connections ();
@@ -1767,13 +1743,8 @@ static void
1767check_duplicates (void *cls) 1743check_duplicates (void *cls)
1768{ 1744{
1769 struct CadetConnection *c = cls; 1745 struct CadetConnection *c = cls;
1770 const struct GNUNET_SCHEDULER_TaskContext *tc;
1771 1746
1772 c->check_duplicates_task = NULL; 1747 c->check_duplicates_task = NULL;
1773 tc = GNUNET_SCHEDULER_get_task_context ();
1774 if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN))
1775 return;
1776
1777 if (GNUNET_YES == does_connection_exist (c)) 1748 if (GNUNET_YES == does_connection_exist (c))
1778 { 1749 {
1779 GCT_debug (c->t, GNUNET_ERROR_TYPE_DEBUG); 1750 GCT_debug (c->t, GNUNET_ERROR_TYPE_DEBUG);
@@ -1783,7 +1754,6 @@ check_duplicates (void *cls)
1783} 1754}
1784 1755
1785 1756
1786
1787/** 1757/**
1788 * Wait for enough time to let any dead connections time out and check for 1758 * Wait for enough time to let any dead connections time out and check for
1789 * any remaining duplicates. 1759 * any remaining duplicates.
@@ -1797,7 +1767,6 @@ schedule_check_duplicates (struct CadetConnection *c)
1797 1767
1798 if (NULL != c->check_duplicates_task) 1768 if (NULL != c->check_duplicates_task)
1799 return; 1769 return;
1800
1801 delay = GNUNET_TIME_relative_multiply (refresh_connection_time, 5); 1770 delay = GNUNET_TIME_relative_multiply (refresh_connection_time, 5);
1802 c->check_duplicates_task = GNUNET_SCHEDULER_add_delayed (delay, 1771 c->check_duplicates_task = GNUNET_SCHEDULER_add_delayed (delay,
1803 &check_duplicates, 1772 &check_duplicates,
@@ -1805,7 +1774,6 @@ schedule_check_duplicates (struct CadetConnection *c)
1805} 1774}
1806 1775
1807 1776
1808
1809/** 1777/**
1810 * Add the connection to the list of both neighbors. 1778 * Add the connection to the list of both neighbors.
1811 * 1779 *
@@ -1903,7 +1871,8 @@ unregister_neighbors (struct CadetConnection *c)
1903 * @param disconnected Peer that disconnected. 1871 * @param disconnected Peer that disconnected.
1904 */ 1872 */
1905static void 1873static void
1906invalidate_paths (struct CadetConnection *c, struct CadetPeer *disconnected) 1874invalidate_paths (struct CadetConnection *c,
1875 struct CadetPeer *disconnected)
1907{ 1876{
1908 struct CadetPeer *peer; 1877 struct CadetPeer *peer;
1909 unsigned int i; 1878 unsigned int i;