r9107@Kushana: nickm | 2006-10-06 02:14:02 -0400

When eventdns is enabled, we can allow machines with thread-unsafe resolver functions to build multithreaded anyway.


svn:r8608
This commit is contained in:
Nick Mathewson 2006-10-06 15:29:33 +00:00
parent 1d4bd3990f
commit 09a2ec0192
2 changed files with 30 additions and 25 deletions

View File

@ -88,6 +88,9 @@ Changes in version 0.1.2.2-alpha - 2006-10-??
- Just because your DirPort is open doesn't mean people should be
able to remotely teach you about hidden service descriptors. Now
only accept rendezvous posts if you've got HSAuthoritativeDir set.
- When eventdns is enabled, allow multithreaded builds on NetBSD and
OpenBSD. (We had previously disabled threads on these platforms
because they didn't have working thread-safe resolver functions)
o Major bugfixes, other:
- Avoiding crashing on race condition in dns.c:

View File

@ -19,31 +19,6 @@ AC_ARG_ENABLE(debug,
CFLAGS="$CFLAGS -g"
fi])
AC_ARG_ENABLE(threads,
AC_HELP_STRING(--disable-threads, disable multi-threading support))
if test x$enable_threads = x; then
case $host in
*-*-netbsd* | *-*-openbsd* )
# Don't try multithreading on netbsd -- there is no threadsafe DNS
# lookup function there.
AC_MSG_NOTICE([You are running OpenBSD or NetBSD; I am assuming that
getaddrinfo is not threadsafe here, so I will disable threads.])
enable_threads="no";;
*-*-solaris* )
# Don't try multithreading on solaris -- cpuworkers seem to lock.
AC_MSG_NOTICE([You are running Solaris; Sometimes threading makes
cpu workers lock up here, so I will disable threads.])
enable_threads="no";;
*)
enable_threads="yes";;
esac
fi
if test $enable_threads = "yes"; then
AC_DEFINE(ENABLE_THREADS, 1, [Defined if we will try to use multithreading])
fi
AC_ARG_ENABLE(eventdns,
AC_HELP_STRING(--enable-eventdns, enable asynchronous dns module),
[case "${enableval}" in
@ -64,6 +39,33 @@ AC_ARG_ENABLE(transparent,
*) AC_MSG_ERROR(bad value for --enable-transparent) ;;
esac], [transparent=true])
AC_ARG_ENABLE(threads,
AC_HELP_STRING(--disable-threads, disable multi-threading support))
if test x$enable_threads = x; then
case $host in
*-*-netbsd* | *-*-openbsd* )
# Don't try multithreading on netbsd -- there is no threadsafe DNS
# lookup function there.
if test x$eventdns != xtrue; then
AC_MSG_NOTICE([You are running OpenBSD or NetBSD; I am assuming that
getaddrinfo is not threadsafe here, so I will disable threads.])
enable_threads="no"
fi ;;
*-*-solaris* )
# Don't try multithreading on solaris -- cpuworkers seem to lock.
AC_MSG_NOTICE([You are running Solaris; Sometimes threading makes
cpu workers lock up here, so I will disable threads.])
enable_threads="no";;
*)
enable_threads="yes";;
esac
fi
if test $enable_threads = "yes"; then
AC_DEFINE(ENABLE_THREADS, 1, [Defined if we will try to use multithreading])
fi
case $host in
*-*-solaris* )
AC_DEFINE(_REENTRANT, 1, [Define on some platforms to activate x_r() functions in time.h])