aboutsummaryrefslogtreecommitdiff
path: root/src/transport
diff options
context:
space:
mode:
Diffstat (limited to 'src/transport')
-rw-r--r--src/transport/gnunet-service-transport.c14
-rw-r--r--src/transport/gnunet-service-transport_ats.c11
-rw-r--r--src/transport/gnunet-service-transport_neighbours.c5
-rw-r--r--src/transport/gnunet-service-transport_validation.c34
-rw-r--r--src/transport/test_transport_testing_restart.c3
-rw-r--r--src/transport/test_transport_testing_startstop.c3
-rw-r--r--src/transport/transport-testing.c7
7 files changed, 58 insertions, 19 deletions
diff --git a/src/transport/gnunet-service-transport.c b/src/transport/gnunet-service-transport.c
index ec4d82164..124260c41 100644
--- a/src/transport/gnunet-service-transport.c
+++ b/src/transport/gnunet-service-transport.c
@@ -541,6 +541,13 @@ client_disconnect_cb (void *cls,
541 GNUNET_CONTAINER_multipeermap_iterate (active_stccs, 541 GNUNET_CONTAINER_multipeermap_iterate (active_stccs,
542 &mark_match_down, 542 &mark_match_down,
543 tc); 543 tc);
544 for (struct AddressToStringContext *cur = a2s_head;
545 NULL != cur;
546 cur = cur->next)
547 {
548 if (cur->tc == tc)
549 cur->tc = NULL;
550 }
544 GNUNET_CONTAINER_DLL_remove (clients_head, 551 GNUNET_CONTAINER_DLL_remove (clients_head,
545 clients_tail, 552 clients_tail,
546 tc); 553 tc);
@@ -681,6 +688,8 @@ handle_client_hello (void *cls,
681{ 688{
682 struct TransportClient *tc = cls; 689 struct TransportClient *tc = cls;
683 690
691 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
692 "Received HELLO message\n");
684 GST_validation_handle_hello (message); 693 GST_validation_handle_hello (message);
685 GNUNET_SERVICE_client_continue (tc->client); 694 GNUNET_SERVICE_client_continue (tc->client);
686} 695}
@@ -864,6 +873,8 @@ transmit_address_to_client (void *cls,
864 873
865 GNUNET_assert ( (GNUNET_OK == res) || 874 GNUNET_assert ( (GNUNET_OK == res) ||
866 (GNUNET_SYSERR == res) ); 875 (GNUNET_SYSERR == res) );
876 if (NULL == actx->tc)
877 return;
867 if (NULL == buf) 878 if (NULL == buf)
868 { 879 {
869 env = GNUNET_MQ_msg (atsm, 880 env = GNUNET_MQ_msg (atsm,
@@ -878,6 +889,7 @@ transmit_address_to_client (void *cls,
878 GNUNET_CONTAINER_DLL_remove (a2s_head, 889 GNUNET_CONTAINER_DLL_remove (a2s_head,
879 a2s_tail, 890 a2s_tail,
880 actx); 891 actx);
892 GNUNET_free (actx);
881 return; 893 return;
882 } 894 }
883 if (GNUNET_SYSERR == res) 895 if (GNUNET_SYSERR == res)
@@ -2792,7 +2804,7 @@ run (void *cls,
2792 GNUNET_assert (NULL != GST_my_private_key); 2804 GNUNET_assert (NULL != GST_my_private_key);
2793 2805
2794 GNUNET_log(GNUNET_ERROR_TYPE_INFO, 2806 GNUNET_log(GNUNET_ERROR_TYPE_INFO,
2795 "My identity is `%4s'\n", 2807 "My identity is `%s'\n",
2796 GNUNET_i2s_full (&GST_my_identity)); 2808 GNUNET_i2s_full (&GST_my_identity));
2797 2809
2798 GNUNET_SCHEDULER_add_shutdown (&shutdown_task, 2810 GNUNET_SCHEDULER_add_shutdown (&shutdown_task,
diff --git a/src/transport/gnunet-service-transport_ats.c b/src/transport/gnunet-service-transport_ats.c
index a20c998b3..01e115bfc 100644
--- a/src/transport/gnunet-service-transport_ats.c
+++ b/src/transport/gnunet-service-transport_ats.c
@@ -337,15 +337,10 @@ GST_ats_block_address (const struct GNUNET_HELLO_Address *address,
337 return; /* our own, ignore! */ 337 return; /* our own, ignore! */
338 ai = find_ai (address, 338 ai = find_ai (address,
339 session); 339 session);
340 if (NULL == ai) 340 if (NULL == ai || NULL == ai->ar)
341 { 341 {
342 GNUNET_assert (0); 342 /* The address is already gone/blocked, this can happen during a blacklist
343 return; 343 * callback. */
344 }
345 if (NULL == ai->ar)
346 {
347 /* already blocked, how did it get used!? */
348 GNUNET_break (0);
349 return; 344 return;
350 } 345 }
351 ai->back_off = GNUNET_TIME_STD_BACKOFF (ai->back_off); 346 ai->back_off = GNUNET_TIME_STD_BACKOFF (ai->back_off);
diff --git a/src/transport/gnunet-service-transport_neighbours.c b/src/transport/gnunet-service-transport_neighbours.c
index 19f5fd081..ac72a667c 100644
--- a/src/transport/gnunet-service-transport_neighbours.c
+++ b/src/transport/gnunet-service-transport_neighbours.c
@@ -2433,7 +2433,10 @@ switch_address_bl_check_cont (void *cls,
2433 goto cleanup; 2433 goto cleanup;
2434 2434
2435 papi = GST_plugins_find (address->transport_name); 2435 papi = GST_plugins_find (address->transport_name);
2436 GNUNET_assert (NULL != papi); 2436 if (NULL == papi) {
2437 /* This can happen during shutdown. */
2438 goto cleanup;
2439 }
2437 2440
2438 if (GNUNET_NO == result) 2441 if (GNUNET_NO == result)
2439 { 2442 {
diff --git a/src/transport/gnunet-service-transport_validation.c b/src/transport/gnunet-service-transport_validation.c
index 4a6d427be..cd5aeb5e2 100644
--- a/src/transport/gnunet-service-transport_validation.c
+++ b/src/transport/gnunet-service-transport_validation.c
@@ -784,15 +784,24 @@ revalidate_address (void *cls)
784 GNUNET_STATISTICS_update (GST_stats, 784 GNUNET_STATISTICS_update (GST_stats,
785 gettext_noop ("# address revalidations started"), 1, 785 gettext_noop ("# address revalidations started"), 1,
786 GNUNET_NO); 786 GNUNET_NO);
787 if (NULL != ve->bc)
788 {
789 GST_blacklist_test_cancel (ve->bc);
790 ve->bc = NULL;
791 }
787 bc = GST_blacklist_test_allowed (&ve->address->peer, 792 bc = GST_blacklist_test_allowed (&ve->address->peer,
788 ve->address->transport_name, 793 ve->address->transport_name,
789 &transmit_ping_if_allowed, 794 &transmit_ping_if_allowed,
790 ve, 795 ve,
791 NULL, 796 NULL,
792 NULL); 797 NULL);
793 if (NULL != bc) 798 if (NULL != bc)
794 ve->bc = bc; /* only set 'bc' if 'transmit_ping_if_allowed' was not already 799 {
795 * called... */ 800 /* If transmit_ping_if_allowed was already called it may have freed ve,
801 * so only set ve->bc if it has not been called.
802 */
803 ve->bc = bc;
804 }
796} 805}
797 806
798 807
@@ -1338,6 +1347,9 @@ GST_validation_handle_address (const struct GNUNET_HELLO_Address *address)
1338 if (NULL == papi) 1347 if (NULL == papi)
1339 { 1348 {
1340 /* This plugin is currently unvailable ... ignore */ 1349 /* This plugin is currently unvailable ... ignore */
1350 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
1351 "No plugin available for %s\n",
1352 address->transport_name);
1341 return; 1353 return;
1342 } 1354 }
1343 ve = find_validation_entry (address); 1355 ve = find_validation_entry (address);
@@ -1349,6 +1361,13 @@ GST_validation_handle_address (const struct GNUNET_HELLO_Address *address)
1349 GNUNET_i2s (&ve->address->peer)); 1361 GNUNET_i2s (&ve->address->peer));
1350 ve->revalidation_task = GNUNET_SCHEDULER_add_now (&revalidate_address, ve); 1362 ve->revalidation_task = GNUNET_SCHEDULER_add_now (&revalidate_address, ve);
1351 } 1363 }
1364 else
1365 {
1366 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
1367 "Validation already running for address `%s' of %s\n",
1368 GST_plugins_a2s (ve->address),
1369 GNUNET_i2s (&ve->address->peer));
1370 }
1352} 1371}
1353 1372
1354 1373
@@ -1648,6 +1667,9 @@ GST_validation_handle_hello (const struct GNUNET_MessageHeader *hello)
1648 sizeof (struct GNUNET_PeerIdentity))) 1667 sizeof (struct GNUNET_PeerIdentity)))
1649 { 1668 {
1650 /* got our own HELLO, how boring */ 1669 /* got our own HELLO, how boring */
1670 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1671 "Validation received our own HELLO (%s), ignoring\n",
1672 GNUNET_i2s (&pid));
1651 return GNUNET_OK; 1673 return GNUNET_OK;
1652 } 1674 }
1653 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 1675 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
diff --git a/src/transport/test_transport_testing_restart.c b/src/transport/test_transport_testing_restart.c
index 595177e03..06275055d 100644
--- a/src/transport/test_transport_testing_restart.c
+++ b/src/transport/test_transport_testing_restart.c
@@ -71,7 +71,8 @@ restart_cb (void *cls)
71 p->no, 71 p->no,
72 GNUNET_i2s (&p->id)); 72 GNUNET_i2s (&p->id));
73 ret = 0; 73 ret = 0;
74 end (); 74 GNUNET_SCHEDULER_add_now (&end,
75 NULL);
75} 76}
76 77
77 78
diff --git a/src/transport/test_transport_testing_startstop.c b/src/transport/test_transport_testing_startstop.c
index 6ac0250cc..931e922c4 100644
--- a/src/transport/test_transport_testing_startstop.c
+++ b/src/transport/test_transport_testing_startstop.c
@@ -71,7 +71,8 @@ start_cb (void *cls)
71 p->no, 71 p->no,
72 GNUNET_i2s (&p->id)); 72 GNUNET_i2s (&p->id));
73 ret = 0; 73 ret = 0;
74 end (); 74 GNUNET_SCHEDULER_add_now (&end,
75 NULL);
75} 76}
76 77
77 78
diff --git a/src/transport/transport-testing.c b/src/transport/transport-testing.c
index 2aa6cdbb0..68cda3bd7 100644
--- a/src/transport/transport-testing.c
+++ b/src/transport/transport-testing.c
@@ -384,7 +384,7 @@ GNUNET_TRANSPORT_TESTING_start_peer (struct GNUNET_TRANSPORT_TESTING_Handle *tth
384{ 384{
385 char *emsg = NULL; 385 char *emsg = NULL;
386 struct GNUNET_TRANSPORT_TESTING_PeerContext *p; 386 struct GNUNET_TRANSPORT_TESTING_PeerContext *p;
387 struct GNUNET_PeerIdentity *dummy; 387 struct GNUNET_PeerIdentity dummy;
388 unsigned int i; 388 unsigned int i;
389 389
390 if (GNUNET_NO == GNUNET_DISK_file_test (cfgname)) 390 if (GNUNET_NO == GNUNET_DISK_file_test (cfgname))
@@ -678,6 +678,11 @@ GNUNET_TRANSPORT_TESTING_stop_peer (struct GNUNET_TRANSPORT_TESTING_PeerContext
678 GNUNET_CONFIGURATION_destroy (p->cfg); 678 GNUNET_CONFIGURATION_destroy (p->cfg);
679 p->cfg = NULL; 679 p->cfg = NULL;
680 } 680 }
681 if (NULL != p->handlers)
682 {
683 GNUNET_free (p->handlers);
684 p->handlers = NULL;
685 }
681 GNUNET_CONTAINER_DLL_remove (tth->p_head, 686 GNUNET_CONTAINER_DLL_remove (tth->p_head,
682 tth->p_tail, 687 tth->p_tail,
683 p); 688 p);