[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[or-cvs] [torsocks/master] Compile and (apparently) work on OpenBSD



commit 75b9f9880737197b8c00c897e04c1c4116ee3de0
Author: Robert Hogan <robert@xxxxxxxxxxxxxxx>
Date:   Mon Feb 14 22:51:40 2011 +0000

    Compile and (apparently) work on OpenBSD
    
    Need more testing to be sure, but it looks like it works OK.
---
 configure.in    |   12 ++++++++++++
 src/Makefile.am |    1 -
 src/dead_pool.c |    5 +++++
 src/torsocks.c  |    2 +-
 4 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/configure.in b/configure.in
index ca5af2a..cdb99e7 100644
--- a/configure.in
+++ b/configure.in
@@ -518,6 +518,9 @@ SPECIALLIBS=${LIBS}
 AC_SUBST(SPECIALLIBS)
 LIBS=${SIMPLELIBS}
 
+AC_SEARCH_LIBS(dlopen, [dl])
+AC_SEARCH_LIBS(inet_aton, [resolv])
+
 dnl Linker checks for Mac OSX, which uses DYLD_INSERT_LIBRARIES
 dnl instead of LD_PRELOAD
 case "$host_os" in
@@ -562,6 +565,15 @@ darwin*)
     ;;
 esac
 
+dnl OpenBSD needs -lpthread. It also doesn't support AI_V4MAPPED.
+case $host in
+*-*-openbsd*)
+  AC_DEFINE(OPENBSD, 1, "Define to handle OpenBSD")
+  AC_SEARCH_LIBS(pthread_create, [pthread])
+  AC_SEARCH_LIBS(pthread_detach, [pthread])
+    ;;
+esac
+
 AC_SUBST(SHLIB_EXT)
 AC_SUBST(LD_PRELOAD)
 
diff --git a/src/Makefile.am b/src/Makefile.am
index 134dc42..cce43f2 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,6 +1,5 @@
 # Makefile used by configure to create real Makefile
 
-LIBS = -ldl -lc -lresolv
 libdir = @libdir@/torsocks
 
 # Install configuration file
diff --git a/src/dead_pool.c b/src/dead_pool.c
index bba90d3..6f4043a 100644
--- a/src/dead_pool.c
+++ b/src/dead_pool.c
@@ -752,6 +752,10 @@ our_getipnodebyname(dead_pool *pool, const char *name, int af, int flags,
         /* Caller has requested an AF_INET6 address, and is not prepared to
            accept IPv4-mapped IPV6 addresses. There's nothing we can do to
            service their request. */
+#ifdef OPENBSD
+        /* OpenBSD doesn't support the AI_V4MAPPED flag, so just return. */
+        return NULL;
+#else
         if((flags & AI_V4MAPPED) == 0) {
             show_msg(MSGWARN, "getipnodebyname: asked for V6 addresses only, "
                      "but torsocks can't handle that\n");
@@ -760,6 +764,7 @@ our_getipnodebyname(dead_pool *pool, const char *name, int af, int flags,
         } else {
             want_4in6 = 1;
         }
+#endif
     }
 
     pos = store_pool_entry(pool, (char *)name, &pool_addr);
diff --git a/src/torsocks.c b/src/torsocks.c
index 579751e..4239ced 100644
--- a/src/torsocks.c
+++ b/src/torsocks.c
@@ -147,7 +147,7 @@ static pthread_mutex_t torsocks_init_mutex = PTHREAD_MUTEX_INITIALIZER;
 void torsocks_init(void)
 {
 #define LOAD_ERROR(s,l) { \
-    char *error; \
+    const char *error; \
     error = dlerror(); \
     show_msg(l, "The symbol %s() was not found in any shared " \
                      "library. The error reported was: %s!\n", s, \