gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r24751 - in gnunet/src: include transport


From: gnunet
Subject: [GNUnet-SVN] r24751 - in gnunet/src: include transport
Date: Mon, 5 Nov 2012 16:13:04 +0100

Author: wachs
Date: 2012-11-05 16:13:04 +0100 (Mon, 05 Nov 2012)
New Revision: 24751

Modified:
   gnunet/src/include/gnunet_transport_service.h
   gnunet/src/transport/transport_api.c
Log:
- fix for mantis 0002618


Modified: gnunet/src/include/gnunet_transport_service.h
===================================================================
--- gnunet/src/include/gnunet_transport_service.h       2012-11-05 15:06:13 UTC 
(rev 24750)
+++ gnunet/src/include/gnunet_transport_service.h       2012-11-05 15:13:04 UTC 
(rev 24751)
@@ -164,8 +164,11 @@
  *
  * @param handle connection to transport service
  * @param target who we should try to connect to
+ * @return GNUNET_OK if request can be scheduled
+ *         GNUNET_NO please retry later because we are reconnecting
+ *         GNUNET_SYSERR on failure
  */
-void
+int
 GNUNET_TRANSPORT_try_connect (struct GNUNET_TRANSPORT_Handle *handle,
                               const struct GNUNET_PeerIdentity *target);
 

Modified: gnunet/src/transport/transport_api.c
===================================================================
--- gnunet/src/transport/transport_api.c        2012-11-05 15:06:13 UTC (rev 
24750)
+++ gnunet/src/transport/transport_api.c        2012-11-05 15:13:04 UTC (rev 
24751)
@@ -298,6 +298,11 @@
    * (if GNUNET_NO, then 'self' is all zeros!).
    */
   int check_self;
+
+  /**
+   * Reconnect in progress
+   */
+  int reconnecting;
 };
 
 
@@ -987,24 +992,27 @@
   return sizeof (struct TransportRequestConnectMessage);
 }
 
-
 /**
  * Ask the transport service to establish a connection to
  * the given peer.
  *
  * @param handle connection to transport service
  * @param target who we should try to connect to
+ * @return GNUNET_OK if request can be scheduled
+ *         GNUNET_NO please retry later because we are reconnecting
+ *         GNUNET_SYSERR on failure
  */
-void
+int
 GNUNET_TRANSPORT_try_connect (struct GNUNET_TRANSPORT_Handle *handle,
                               const struct GNUNET_PeerIdentity *target)
 {
   struct GNUNET_PeerIdentity *pid;
   if (NULL == handle->client)
   {
-      /* FIXME: handle->client can be NULL when transport api is reconnecting 
*/
-      GNUNET_break (0);
-      return;
+    if (GNUNET_SCHEDULER_NO_TASK == handle->reconnect_task)
+      return GNUNET_SYSERR; /* this should never happen */
+    else
+      return GNUNET_NO; /* please retry */
   }
 
   pid = GNUNET_malloc (sizeof (struct GNUNET_PeerIdentity));
@@ -1012,6 +1020,7 @@
   schedule_control_transmit (handle,
                              sizeof (struct TransportRequestConnectMessage),
                              &send_try_connect, pid);
+  return GNUNET_OK;
 }
 
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]