gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r14291 - gnunet/src/util


From: gnunet
Subject: [GNUnet-SVN] r14291 - gnunet/src/util
Date: Mon, 31 Jan 2011 12:22:23 +0100

Author: nevans
Date: 2011-01-31 12:22:23 +0100 (Mon, 31 Jan 2011)
New Revision: 14291

Modified:
   gnunet/src/util/client.c
   gnunet/src/util/connection.c
Log:
Fix for unixpath/arm bug

Modified: gnunet/src/util/client.c
===================================================================
--- gnunet/src/util/client.c    2011-01-31 10:37:52 UTC (rev 14290)
+++ gnunet/src/util/client.c    2011-01-31 11:22:23 UTC (rev 14291)
@@ -43,7 +43,9 @@
  */
 #define MAX_ATTEMPTS 50
 
+#define UNIXPATH_RETRIES 0
 
+
 /**
  * Handle for a transmission request.
  */
@@ -271,7 +273,9 @@
   char *hostname;
   char *unixpath;
   unsigned long long port;
+  unsigned int count;
 
+  sock = NULL;
 #if AF_UNIX
   if (0 == (attempt % 2))
     {
@@ -280,13 +284,28 @@
          GNUNET_CONFIGURATION_get_value_string (cfg,
                                                 service_name,
                                                 "UNIXPATH", &unixpath)) &&
-          (0 < strlen (unixpath)))
+          (0 < strlen (unixpath))) /* We have a non-NULL unixpath, does that 
mean it's valid? */
        {
-         sock = GNUNET_CONNECTION_create_from_connect_to_unixpath (cfg,
-                                                                   unixpath);
+          count = 0;
+          sock = GNUNET_CONNECTION_create_from_connect_to_unixpath (cfg, 
unixpath);
+          while ((NULL == sock) && (count < UNIXPATH_RETRIES))
+            {
+#if DEBUG_CLIENT
+              GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Failed to connect to 
unixpath `%s', retrying!\n", unixpath);
+#endif
+              count++;
+              sleep(1);
+              sock = GNUNET_CONNECTION_create_from_connect_to_unixpath (cfg, 
unixpath);
+            }
+
          GNUNET_free (unixpath);
          if (sock != NULL)
-           return sock;
+           {
+#if DEBUG_CLIENT
+              GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Connected to unixpath 
`%s'!\n", unixpath);
+#endif
+              return sock;
+           }
        }
     }
 #endif
@@ -332,12 +351,16 @@
                                                                        
unixpath);
              GNUNET_free (unixpath);
              if (sock != NULL)
-               return sock;
+               {
+                  return sock;
+               }
            }
        }
 #endif
+      GNUNET_log(GNUNET_ERROR_TYPE_WARNING, "Port is 0 for service `%s', 
unixpath didn't work, returning NULL(!)!\n", service_name);
       return NULL;
     }
+  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Creating from connect!\n");
   sock = GNUNET_CONNECTION_create_from_connect (cfg,
                                                 hostname,
                                                 port);
@@ -480,6 +503,9 @@
   if ((available == 0) || (conn->sock == NULL) || (errCode != 0))
     {
       /* signal timeout! */
+#if DEBUG_CLIENT
+      GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "timeout in receive_helper, 
available %d, conn->sock %s, errCode %d\n", available, conn->sock == NULL ? 
"NULL" : "non-NULL", errCode);
+#endif
       if (NULL != (receive_handler = conn->receiver_handler))
         {
           receive_handler_cls = conn->receiver_handler_cls;
@@ -586,6 +612,9 @@
     {
       GNUNET_assert (sock->in_receive == GNUNET_NO);
       sock->in_receive = GNUNET_YES;
+#if DEBUG_CLIENT
+      GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "calling 
GNUNET_CONNECTION_receive\n");
+#endif
       GNUNET_CONNECTION_receive (sock->sock,
                                  GNUNET_SERVER_MAX_MESSAGE_SIZE - 1,
                                  timeout, &receive_helper, sock);

Modified: gnunet/src/util/connection.c
===================================================================
--- gnunet/src/util/connection.c        2011-01-31 10:37:52 UTC (rev 14290)
+++ gnunet/src/util/connection.c        2011-01-31 11:22:23 UTC (rev 14291)
@@ -41,7 +41,9 @@
 
 #define DEBUG_CONNECTION GNUNET_NO
 
+#define HARD_FAIL GNUNET_NO
 
+
 /**
  * Possible functions to call after connect failed or succeeded.
  */
@@ -965,14 +967,16 @@
                                                  ret->addr,
                                                  ret->addrlen)) 
     {
-      /* Just return; we expect everything to work eventually so don't fail 
HARD */
-      return ret;
 #if HARD_FAIL
       GNUNET_break (GNUNET_OK == GNUNET_NETWORK_socket_close (ret->sock));
       GNUNET_free (ret->addr);
       GNUNET_free (ret->write_buffer);
       GNUNET_free (ret);
       return NULL;
+#else /* Just return; we expect everything to work eventually so don't fail 
HARD */
+      GNUNET_break (GNUNET_OK == GNUNET_NETWORK_socket_close (ret->sock));
+      ret->sock = NULL;
+      return ret;
 #endif
     }
   connect_success_continuation (ret);
@@ -1415,7 +1419,9 @@
 {
   struct GNUNET_CONNECTION_Handle *sock = cls;
   GNUNET_CONNECTION_TransmitReadyNotify notify;
-
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+              "Transmission request of size %u fails, connection failed 
(%p).\n",
+              sock->nth.notify_size, sock);
 #if DEBUG_CONNECTION
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
               "Transmission request of size %u fails, connection failed 
(%p).\n",




reply via email to

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