aboutsummaryrefslogtreecommitdiff
path: root/src/transport/gnunet-transport.c
diff options
context:
space:
mode:
authorMatthias Wachs <wachs@net.in.tum.de>2012-11-09 13:52:57 +0000
committerMatthias Wachs <wachs@net.in.tum.de>2012-11-09 13:52:57 +0000
commitbb0240fe32655ac74bb8d43252999a1b5e4829b6 (patch)
tree3da072bac46e5bf0ce5e455d6cd66ea86127bfdb /src/transport/gnunet-transport.c
parenta61fe2107d79336c3da80591c24256b6dbd3d159 (diff)
downloadgnunet-bb0240fe32655ac74bb8d43252999a1b5e4829b6.tar.gz
gnunet-bb0240fe32655ac74bb8d43252999a1b5e4829b6.zip
API change
Diffstat (limited to 'src/transport/gnunet-transport.c')
-rw-r--r--src/transport/gnunet-transport.c50
1 files changed, 48 insertions, 2 deletions
diff --git a/src/transport/gnunet-transport.c b/src/transport/gnunet-transport.c
index b3a971b96..2f68ba893 100644
--- a/src/transport/gnunet-transport.c
+++ b/src/transport/gnunet-transport.c
@@ -59,6 +59,12 @@ static char *cpid;
59 */ 59 */
60static struct GNUNET_TRANSPORT_Handle *handle; 60static struct GNUNET_TRANSPORT_Handle *handle;
61 61
62
63/**
64 * Try_connect handle
65 */
66struct GNUNET_TRANSPORT_TryConnectHandle * tc_handle;
67
62/** 68/**
63 * Option -s. 69 * Option -s.
64 */ 70 */
@@ -225,6 +231,11 @@ shutdown_task (void *cls,
225 GNUNET_SCHEDULER_cancel (op_timeout); 231 GNUNET_SCHEDULER_cancel (op_timeout);
226 op_timeout = GNUNET_SCHEDULER_NO_TASK; 232 op_timeout = GNUNET_SCHEDULER_NO_TASK;
227 } 233 }
234 if (NULL != tc_handle)
235 {
236 GNUNET_TRANSPORT_try_connect_cancel (tc_handle);
237 tc_handle = NULL;
238 }
228 if (NULL != pic) 239 if (NULL != pic)
229 { 240 {
230 GNUNET_TRANSPORT_peer_get_active_addresses_cancel (pic); 241 GNUNET_TRANSPORT_peer_get_active_addresses_cancel (pic);
@@ -696,6 +707,29 @@ process_address (void *cls, const struct GNUNET_PeerIdentity *peer,
696 rc); 707 rc);
697} 708}
698 709
710void try_connect_cb (void *cls,
711 const int result)
712{
713 static int retries = 0;
714 if (GNUNET_OK == result)
715 {
716 tc_handle = NULL;
717 return;
718 }
719 retries ++;
720 if (retries < 10)
721 tc_handle = GNUNET_TRANSPORT_try_connect (handle, &pid, try_connect_cb, NULL);
722 else
723 {
724 FPRINTF (stderr, "%s", _("Failed to send connect request to transport service\n"));
725 if (GNUNET_SCHEDULER_NO_TASK != end)
726 GNUNET_SCHEDULER_cancel (end);
727 ret = 1;
728 end = GNUNET_SCHEDULER_add_now (&shutdown_task, NULL);
729 return;
730 }
731}
732
699 733
700static void 734static void
701testservice_task (void *cls, 735testservice_task (void *cls,
@@ -752,7 +786,13 @@ testservice_task (void *cls,
752 ret = 1; 786 ret = 1;
753 return; 787 return;
754 } 788 }
755 GNUNET_TRANSPORT_try_connect (handle, &pid, NULL, NULL); /*FIXME TRY_CONNECT change */ 789 tc_handle = GNUNET_TRANSPORT_try_connect (handle, &pid, try_connect_cb, NULL);
790 if (NULL == tc_handle)
791 {
792 FPRINTF (stderr, "%s", _("Failed to send request to transport service\n"));
793 ret = 1;
794 return;
795 }
756 op_timeout = GNUNET_SCHEDULER_add_delayed (OP_TIMEOUT, 796 op_timeout = GNUNET_SCHEDULER_add_delayed (OP_TIMEOUT,
757 &operation_timeout, NULL); 797 &operation_timeout, NULL);
758 798
@@ -776,7 +816,13 @@ testservice_task (void *cls,
776 ret = 1; 816 ret = 1;
777 return; 817 return;
778 } 818 }
779 GNUNET_TRANSPORT_try_connect (handle, &pid, NULL, NULL); /*FIXME TRY_CONNECT change */ 819 tc_handle = GNUNET_TRANSPORT_try_connect (handle, &pid, try_connect_cb, NULL);
820 if (NULL == tc_handle)
821 {
822 FPRINTF (stderr, "%s", _("Failed to send request to transport service\n"));
823 ret = 1;
824 return;
825 }
780 start_time = GNUNET_TIME_absolute_get (); 826 start_time = GNUNET_TIME_absolute_get ();
781 op_timeout = GNUNET_SCHEDULER_add_delayed (OP_TIMEOUT, 827 op_timeout = GNUNET_SCHEDULER_add_delayed (OP_TIMEOUT,
782 &operation_timeout, NULL); 828 &operation_timeout, NULL);