gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] [gnunet] branch master updated: cache PF support results fr


From: gnunet
Subject: [GNUnet-SVN] [gnunet] branch master updated: cache PF support results from OS probe (#5553)
Date: Sat, 02 Mar 2019 11:17:35 +0100

This is an automated email from the git hooks/post-receive script.

grothoff pushed a commit to branch master
in repository gnunet.

The following commit(s) were added to refs/heads/master by this push:
     new 54d83ad05 cache PF support results from OS probe (#5553)
54d83ad05 is described below

commit 54d83ad059519ca03971b79b8410540d9438b5a8
Author: Christian Grothoff <address@hidden>
AuthorDate: Sat Mar 2 11:17:27 2019 +0100

    cache PF support results from OS probe (#5553)
---
 src/util/network.c | 58 +++++++++++++++++++++++++++++++++++++++++++++---------
 1 file changed, 49 insertions(+), 9 deletions(-)

diff --git a/src/util/network.c b/src/util/network.c
index c236292b7..90f8c8640 100644
--- a/src/util/network.c
+++ b/src/util/network.c
@@ -83,24 +83,64 @@ struct GNUNET_NETWORK_Handle
 int
 GNUNET_NETWORK_test_pf (int pf)
 {
+  static int cache_v4 = -1;
+  static int cache_v6 = -1;
+  static int cache_un = -1;
   int s;
+  int ret;
 
+  switch (pf)
+  {
+  case PF_INET:
+    if (-1 != cache_v4)
+      return cache_v4;
+    break;
+  case PF_INET6:
+    if (-1 != cache_v6)
+      return cache_v6;
+    break;
+#ifdef PF_UNIX
+  case PF_UNIX:
+    if (-1 != cache_un)
+      return cache_un;
+    break;
+#endif
+  }
   s = socket (pf, SOCK_STREAM, 0);
   if (-1 == s)
   {
-    if (EAFNOSUPPORT == errno)
-      return GNUNET_NO;
-    GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-                "Failed to create test socket: %s\n",
-                STRERROR (errno));
-    return GNUNET_SYSERR;
+    if (EAFNOSUPPORT != errno)
+    {
+      GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING,
+                          "socket");
+      return GNUNET_SYSERR;
+    }
+    ret = GNUNET_NO;
   }
+  else
+  {
 #if WINDOWS
-  closesocket (s);
+    closesocket (s);
 #else
-  close (s);
+    close (s);
 #endif
-  return GNUNET_OK;
+    ret = GNUNET_OK;
+  }
+  switch (pf)
+  {
+  case PF_INET:
+    cache_v4 = ret;
+    break;
+  case PF_INET6:
+    cache_v6 = ret;
+    break;
+#ifdef PF_UNIX
+  case PF_UNIX:
+    cache_un = ret;
+    break;
+#endif
+  }
+  return ret;
 }
 
 

-- 
To stop receiving notification emails like this one, please contact
address@hidden



reply via email to

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