gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r32978 - in libmicrohttpd: . src/include src/microhttpd src


From: gnunet
Subject: [GNUnet-SVN] r32978 - in libmicrohttpd: . src/include src/microhttpd src/testcurl src/testcurl/https
Date: Tue, 8 Apr 2014 16:46:06 +0200

Author: Karlson2k
Date: 2014-04-08 16:46:06 +0200 (Tue, 08 Apr 2014)
New Revision: 32978

Modified:
   libmicrohttpd/ChangeLog
   libmicrohttpd/configure.ac
   libmicrohttpd/src/include/platform.h
   libmicrohttpd/src/include/platform_interface.h
   libmicrohttpd/src/include/w32functions.h
   libmicrohttpd/src/microhttpd/Makefile.am
   libmicrohttpd/src/microhttpd/daemon.c
   libmicrohttpd/src/microhttpd/internal.h
   libmicrohttpd/src/testcurl/Makefile.am
   libmicrohttpd/src/testcurl/https/Makefile.am
   libmicrohttpd/src/testcurl/https/test_https_get_parallel.c
   libmicrohttpd/src/testcurl/https/test_https_get_parallel_threads.c
   libmicrohttpd/src/testcurl/test_quiesce.c
Log:
Added ability to use native W32 threads, added --with-threads=LIB configure 
parameter

Modified: libmicrohttpd/ChangeLog
===================================================================
--- libmicrohttpd/ChangeLog     2014-04-08 14:36:33 UTC (rev 32977)
+++ libmicrohttpd/ChangeLog     2014-04-08 14:46:06 UTC (rev 32978)
@@ -1,3 +1,7 @@
+Tue Apr 08 15:35:44 CET 2014
+       Added support for W32 native threads.
+       Added --with-threads=LIB configure parameter. -EG
+
 Mon Apr  7 13:25:30 CEST 2014
        Add MHD_OPTION_HTTPS_MEM_DHPARAMS to allow applications
        to enable PFS. -HB/CG

Modified: libmicrohttpd/configure.ac
===================================================================
--- libmicrohttpd/configure.ac  2014-04-08 14:36:33 UTC (rev 32977)
+++ libmicrohttpd/configure.ac  2014-04-08 14:46:06 UTC (rev 32978)
@@ -81,20 +81,37 @@
 AC_SUBST([PACKAGE_VERSION_SUBMINOR])
 AC_CONFIG_FILES([src/microhttpd/microhttpd_dll_res.rc])
 
-AX_PTHREAD(,[AC_MSG_ERROR([[Compiling libmicrohttpd requires pthread 
support]])])
-CC="$PTHREAD_CC"
+MHD_LIB_CPPFLAGS=""
+MHD_LIB_CFLAGS=""
+MHD_LIB_LDFLAGS=""
+MHD_LIBDEPS=""
 
-# set GCC options
-# use '-fno-strict-aliasing', but only if the compiler can take it
-AX_APPEND_COMPILE_FLAGS([[-fno-strict-aliasing]])
+AC_ARG_WITH([threads],
+   [AC_HELP_STRING([--with-threads=LIB],[choose threading library (posix, w32, 
auto) [auto]])],
+   [], [with_threads='auto'])
+test "x$with_threads" = "xwin32" && with_threads='w32'
+test "x$with_threads" = "xpthreads" && with_threads='posix'
 
-AC_C_BIGENDIAN
+# Check for posix threads support
+AX_PTHREAD([HAVE_POSIX_THREADS='yes'],[HAVE_POSIX_THREADS='no'])
+AM_CONDITIONAL([HAVE_POSIX_THREADS],[test "x$HAVE_POSIX_THREADS" = "xyes"])
+# Simple check for W32 threads support
+AC_CHECK_HEADER([windows.h],
+  [
+    AC_MSG_CHECKING([for CreateThread()])
+    AC_LINK_IFELSE(
+      [AC_LANG_PROGRAM([#include <windows.h>], [ HANDLE h = CreateThread(NULL, 
0, NULL, NULL, 0, NULL);])],
+      [
+        AC_MSG_RESULT([yes])
+        HAVE_W32_THREADS='yes'
+      ],
+      [
+        AC_MSG_RESULT([no])
+        HAVE_W32_THREADS='no'
+      ])
+  ],
+  [HAVE_W32_THREADS='no'])
 
-AC_CHECK_PROG([HAVE_CURL_BINARY],[curl],[yes],[no])
-AM_CONDITIONAL([HAVE_CURL_BINARY],[test "x$HAVE_CURL_BINARY" = "xyes"])
-AC_CHECK_PROG([HAVE_MAKEINFO_BINARY],[makeinfo],[yes],[no])
-AM_CONDITIONAL([HAVE_MAKEINFO_BINARY],[test "x$HAVE_MAKEINFO_BINARY" = "xyes"])
-
 # for pkg-config
 MHD_LIBDEPS=""
 # Check system type
@@ -156,7 +173,7 @@
      AC_DEFINE_UNQUOTED(OS390,1,[This is a OS/390 system])
     ;;
 *)
-     AC_MSG_RESULT(Unrecognised OS $host_os)
+     AC_MSG_WARN([Unrecognised OS $host_os])
      AC_DEFINE_UNQUOTED(OTHEROS,1,[Some strange OS])
 #    You might want to find out if your OS supports shutdown on listen sockets,
 #    and extend the switch statement; if we do not have 'HAVE_LISTEN_SHUTDOWN',
@@ -165,6 +182,57 @@
 ;;
 esac
 
+if test "x$with_threads" = "xposix"; then
+# forced posix threads
+  if test "x$HAVE_POSIX_THREADS" = "xyes"; then
+    USE_THREADS='posix'
+  else
+    if test "x$HAVE_W32_THREADS" = "xyes"; then
+      AC_MSG_ERROR([[Posix threads are not available. Try to configure 
--with-threads=auto]])
+    else
+      AC_MSG_ERROR([[Posix threads are not available]])
+    fi
+  fi
+elif test "x$with_threads" = "xw32"; then
+# forced w32 threads
+  if test "x$HAVE_W32_THREADS" = "xyes"; then
+    USE_THREADS='w32'
+  else
+    if test "x$HAVE_POSIX_THREADS" = "xyes"; then
+      AC_MSG_ERROR([[W32 threads are not available. Try to configure 
--with-threads=auto]])
+    else
+      AC_MSG_ERROR([[W32 threads are not available]])
+    fi
+  fi
+else
+# automatic threads lib selection
+  if test "x$HAVE_POSIX_THREADS" = "xyes" && test "x$HAVE_W32_THREADS" = 
"xyes"; then
+    if test "x$os_is_native_w32" = "xyes"; then
+      USE_THREADS='w32'
+    else
+      USE_THREADS='posix'
+    fi
+  elif test "x$HAVE_POSIX_THREADS" = "xyes"; then
+    USE_THREADS='posix'
+  elif test "x$HAVE_W32_THREADS" = "xyes"; then
+    USE_THREADS='w32'
+  else
+    AC_MSG_ERROR([[No threading lib is available. Cosider installing 
pthreads]])
+  fi
+fi
+
+if test "x$USE_THREADS" = "xposix"; then
+  CC="$PTHREAD_CC"
+  AC_DEFINE([MHD_USE_POSIX_THREADS],[1],[define to use pthreads])
+  MHD_LIB_CFLAGS="$MHD_LIB_CFLAGS $PTHREAD_CFLAGS"
+  MHD_LIBDEPS="$PTHREAD_LIBS $MHD_LIBDEPS"
+elif test "x$USE_THREADS" = "xw32"; then
+  AC_DEFINE([MHD_USE_W32_THREADS],[1],[define to use W32 threads])
+fi
+AM_CONDITIONAL([USE_POSIX_THREADS], [test "x$USE_THREADS" = "xposix"])
+AM_CONDITIONAL([USE_W32_THREADS], [test "x$USE_THREADS" = "xw32"])
+
+
 AM_CONDITIONAL(HAVE_W32, [test "x$os_is_native_w32" = "xyes"])
 w32_shared_lib_exp=no
 if test "x$enable_shared" = "xyes" && test "x$os_is_native_w32" = "xyes"; then
@@ -177,6 +245,17 @@
 fi
 AM_CONDITIONAL(W32_SHARED_LIB_EXP, [test "x$w32_shared_lib_exp" = "xyes"])
 AM_CONDITIONAL(USE_MS_LIB_TOOL, [test "x$ac_cv_use_ms_lib_tool" = "xyes"])
+
+# set GCC options
+# use '-fno-strict-aliasing', but only if the compiler can take it
+AX_APPEND_COMPILE_FLAGS([[-fno-strict-aliasing]])
+
+AC_C_BIGENDIAN
+
+AC_CHECK_PROG([HAVE_CURL_BINARY],[curl],[yes],[no])
+AM_CONDITIONAL([HAVE_CURL_BINARY],[test "x$HAVE_CURL_BINARY" = "xyes"])
+AC_CHECK_PROG([HAVE_MAKEINFO_BINARY],[makeinfo],[yes],[no])
+AM_CONDITIONAL([HAVE_MAKEINFO_BINARY],[test "x$HAVE_MAKEINFO_BINARY" = "xyes"])
 AM_CONDITIONAL(W32_STATIC_LIB, [test "x$os_is_native_w32" = "xyes"  && test 
"x$enable_static" = "xyes"])
 
 
@@ -212,19 +291,21 @@
   fi
 fi
 
-SAVE_LIBS="$LIBS"
-SAVE_CFLAGS="$CFLAGS"
-LIBS="$PTHREAD_LIBS $LIBS"
-CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
-# Check for pthread_setname_np()
-AC_MSG_CHECKING([[for pthread_setname_np]])
-AC_LINK_IFELSE(
-  [AC_LANG_PROGRAM([[#include <pthread.h>]], [[  
pthread_setname_np(pthread_self(), "name")]])],
-  [AC_DEFINE([[HAVE_PTHREAD_SETNAME_NP]], [[1]], [Define if you have 
pthread_setname_np function.])
-   AC_MSG_RESULT([[yes]])],
-  [AC_MSG_RESULT([[no]])] )
-LIBS="$SAVE_LIBS"
-CFLAGS="$SAVE_CFLAGS"
+if test "x$HAVE_POSIX_THREADS" = "xyes"; then
+  # Check for pthread_setname_np()
+  SAVE_LIBS="$LIBS"
+  SAVE_CFLAGS="$CFLAGS"
+  LIBS="$PTHREAD_LIBS $LIBS"
+  CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+  AC_MSG_CHECKING([[for pthread_setname_np]])
+  AC_LINK_IFELSE(
+    [AC_LANG_PROGRAM([[#include <pthread.h>]], [[  
pthread_setname_np(pthread_self(), "name")]])],
+    [AC_DEFINE([[HAVE_PTHREAD_SETNAME_NP]], [[1]], [Define if you have 
pthread_setname_np function.])
+     AC_MSG_RESULT([[yes]])],
+    [AC_MSG_RESULT([[no]])] )
+  LIBS="$SAVE_LIBS"
+  CFLAGS="$SAVE_CFLAGS"
+fi
 
 # Check for headers that are ALWAYS required
 AC_CHECK_HEADERS([fcntl.h math.h errno.h limits.h stdio.h locale.h sys/stat.h 
sys/types.h pthread.h],,AC_MSG_ERROR([Compiling libmicrohttpd requires standard 
UNIX headers files]))
@@ -599,10 +680,10 @@
 then
   AS_IF([test "x$have_gnutls" = "xyes" && test "x$have_gcrypt" = "xyes"], [
           AC_DEFINE([HTTPS_SUPPORT],[1],[include HTTPS support])
-          MHD_LIB_CPPFLAGS="$GNUTLS_CPPFLAGS $LIBGCRYPT_CFLAGS"
-          MHD_LIB_CFLAGS="$GNUTLS_CFLAGS $LIBGCRYPT_CFLAGS"
-          MHD_LIB_LDFLAGS="$GNUTLS_LDFLAGS"
-          MHD_LIBDEPS="$GNUTLS_LIBS $LIBGCRYPT_LIBS"
+          MHD_LIB_CPPFLAGS="$MHD_LIB_CPPFLAGS $GNUTLS_CPPFLAGS 
$LIBGCRYPT_CFLAGS"
+          MHD_LIB_CFLAGS="$MHD_LIB_CFLAGS $GNUTLS_CFLAGS $LIBGCRYPT_CFLAGS"
+          MHD_LIB_LDFLAGS="$MHD_LIB_LDFLAGS $GNUTLS_LDFLAGS"
+          MHD_LIBDEPS="$GNUTLS_LIBS $LIBGCRYPT_LIBS $MHD_LIBDEPS"
           enable_https=yes
           MSG_HTTPS="yes (using libgnutls and libgcrypt)"
         ], [
@@ -715,6 +796,7 @@
 
 AC_MSG_NOTICE([Configuration Summary:
   Operating System:  ${host_os}
+  Threading lib:     ${USE_THREADS}
   libcurl (testing): ${MSG_CURL}
   Target directory:  ${prefix}
   Messages:          ${enable_messages}

Modified: libmicrohttpd/src/include/platform.h
===================================================================
--- libmicrohttpd/src/include/platform.h        2014-04-08 14:36:33 UTC (rev 
32977)
+++ libmicrohttpd/src/include/platform.h        2014-04-08 14:46:06 UTC (rev 
32978)
@@ -74,9 +74,11 @@
 #include <fcntl.h>
 #include <signal.h>
 #include <stddef.h>
+#ifdef MHD_USE_POSIX_THREADS
 #undef HAVE_CONFIG_H
 #include <pthread.h>
 #define HAVE_CONFIG_H 1
+#endif // MHD_USE_POSIX_THREADS
 
 /* different OSes have fd_set in
    a broad range of header files;

Modified: libmicrohttpd/src/include/platform_interface.h
===================================================================
--- libmicrohttpd/src/include/platform_interface.h      2014-04-08 14:36:33 UTC 
(rev 32977)
+++ libmicrohttpd/src/include/platform_interface.h      2014-04-08 14:46:06 UTC 
(rev 32978)
@@ -139,11 +139,45 @@
 #define MHD_random_() MHD_W32_random_()
 #endif
 
-#if defined(_WIN32) && !defined(__CYGWIN__)
+#if defined(MHD_USE_POSIX_THREADS)
+typedef pthread_t MHD_thread_handle_;
+#elif defined(MHD_USE_W32_THREADS)
+#include <windows.h>
+typedef HANDLE MHD_thread_handle_;
+#else
+#error "No threading API is available."
+#endif
+
+#if defined(MHD_USE_POSIX_THREADS)
+#define MHD_THRD_RTRN_TYPE_ void*
+#define MHD_THRD_CALL_SPEC_
+#elif defined(MHD_USE_W32_THREADS)
+#define MHD_THRD_RTRN_TYPE_ DWORD
+#define MHD_THRD_CALL_SPEC_ WINAPI
+#endif
+
+#if defined(MHD_USE_POSIX_THREADS)
+/**
+ * Wait until specified thread is ended
+ * @param thread ID to watch
+ * @return zero on success, nonzero on failure
+ */
+#define MHD_join_thread_(thread) pthread_join((thread), NULL)
+#elif defined(MHD_USE_W32_THREADS)
+/**
+ * Wait until specified thread is ended
+ * Close thread handle on success
+ * @param thread handle to watch
+ * @return zero on success, nonzero on failure
+ */
+#define MHD_join_thread_(thread) (WAIT_OBJECT_0 == 
WaitForSingleObject((thread), INFINITE) ? (CloseHandle((thread)), 0) : 1 )
+#endif
+
+#if defined(MHD_USE_W32_THREADS)
 #define MHD_W32_MUTEX_ 1
 #include <windows.h>
 typedef CRITICAL_SECTION MHD_mutex_;
-#elif defined(HAVE_PTHREAD_H)
+#elif defined(HAVE_PTHREAD_H) && defined(MHD_USE_POSIX_THREADS)
 #define MHD_PTHREAD_MUTEX_ 1
 typedef pthread_mutex_t MHD_mutex_;
 #else

Modified: libmicrohttpd/src/include/w32functions.h
===================================================================
--- libmicrohttpd/src/include/w32functions.h    2014-04-08 14:36:33 UTC (rev 
32977)
+++ libmicrohttpd/src/include/w32functions.h    2014-04-08 14:46:06 UTC (rev 
32978)
@@ -146,6 +146,9 @@
 #ifndef ENODATA
 #define ENODATA (MHDW32ERRBASE+35)
 #endif
+#ifndef ETIMEDOUT
+#define ETIMEDOUT (MHDW32ERRBASE+36)
+#endif
 
 /**
  * Return errno equivalent of last winsock error

Modified: libmicrohttpd/src/microhttpd/Makefile.am
===================================================================
--- libmicrohttpd/src/microhttpd/Makefile.am    2014-04-08 14:36:33 UTC (rev 
32977)
+++ libmicrohttpd/src/microhttpd/Makefile.am    2014-04-08 14:46:06 UTC (rev 
32978)
@@ -66,13 +66,13 @@
   $(AM_CPPFLAGS) $(MHD_LIB_CPPFLAGS) \
   -DBUILDING_MHD_LIB=1
 libmicrohttpd_la_CFLAGS = \
-  $(PTHREAD_CFLAGS) $(AM_CFLAGS) $(MHD_LIB_CFLAGS)
+  $(AM_CFLAGS) $(MHD_LIB_CFLAGS)
 libmicrohttpd_la_LDFLAGS = \
   $(MHD_LIB_LDFLAGS) \
   $(W32_MHD_LIB_LDFLAGS) \
   -version-info @LIB_VERSION_CURRENT@:@LIB_VERSION_REVISION@:@LIB_VERSION_AGE@
 libmicrohttpd_la_LIBADD = \
-  $(MHD_W32_LIB) $(PTHREAD_LIBS) $(MHD_LIBDEPS)
+  $(MHD_W32_LIB) $(MHD_LIBDEPS)
 
 if HAVE_W32
 MHD_DLL_RES_SRC = microhttpd_dll_res.rc

Modified: libmicrohttpd/src/microhttpd/daemon.c
===================================================================
--- libmicrohttpd/src/microhttpd/daemon.c       2014-04-08 14:36:33 UTC (rev 
32977)
+++ libmicrohttpd/src/microhttpd/daemon.c       2014-04-08 14:46:06 UTC (rev 
32978)
@@ -740,9 +740,9 @@
  * connection when #MHD_USE_THREAD_PER_CONNECTION is set.
  *
  * @param data the 'struct MHD_Connection' this thread will handle
- * @return always NULL
+ * @return always 0
  */
-static void *
+static MHD_THRD_RTRN_TYPE_ MHD_THRD_CALL_SPEC_
 MHD_handle_connection (void *data)
 {
   struct MHD_Connection *con = data;
@@ -920,7 +920,7 @@
       MHD_destroy_response (con->response);
       con->response = NULL;
     }
-  return NULL;
+  return (MHD_THRD_RTRN_TYPE_)0;
 }
 
 
@@ -1039,7 +1039,7 @@
  * @param cls closure argument for the function
  * @return termination code from the thread
  */
-typedef void *(*ThreadStartRoutine)(void *cls);
+typedef MHD_THRD_RTRN_TYPE_ (MHD_THRD_CALL_SPEC_ *ThreadStartRoutine)(void 
*cls);
 
 
 /**
@@ -1052,11 +1052,12 @@
  * @return 0 on success
  */
 static int
-create_thread (pthread_t *thread,
+create_thread (MHD_thread_handle_ *thread,
               const struct MHD_Daemon *daemon,
               ThreadStartRoutine start_routine,
               void *arg)
 {
+#if defined(MHD_USE_POSIX_THREADS)
   pthread_attr_t attr;
   pthread_attr_t *pattr;
   int ret;
@@ -1091,6 +1092,11 @@
 #endif
   errno = EINVAL;
   return ret;
+#elif defined(MHD_USE_W32_THREADS)
+  *thread = CreateThread(NULL, daemon->thread_stack_size, start_routine,
+                          arg, 0, NULL);
+  return (NULL != (*thread)) ? 0 : 1;
+#endif
 }
 
 
@@ -1858,7 +1864,7 @@
       if ( (0 != (daemon->options & MHD_USE_THREAD_PER_CONNECTION)) &&
           (MHD_NO == pos->thread_joined) )
        {
-         if (0 != pthread_join (pos->pid, NULL))
+         if (0 != MHD_join_thread_ (pos->pid))
            {
              MHD_PANIC ("Failed to join a thread\n");
            }
@@ -2693,9 +2699,9 @@
  * is explicitly shut down.
  *
  * @param cls 'struct MHD_Deamon' to run select loop in a thread for
- * @return always NULL (on shutdown)
+ * @return always 0 (on shutdown)
  */
-static void *
+static MHD_THRD_RTRN_TYPE_ MHD_THRD_CALL_SPEC_
 MHD_select_thread (void *cls)
 {
   struct MHD_Daemon *daemon = cls;
@@ -2712,7 +2718,7 @@
        MHD_select (daemon, MHD_YES);
       MHD_cleanup_connections (daemon);
     }
-  return NULL;
+  return (MHD_THRD_RTRN_TYPE_)0;
 }
 
 
@@ -4012,7 +4018,7 @@
     {
       while (NULL != (pos = daemon->connections_head))
        {
-         if (0 != pthread_join (pos->pid, NULL))
+         if (0 != MHD_join_thread_ (pos->pid))
            MHD_PANIC ("Failed to join a thread\n");
          pos->thread_joined = MHD_YES;
        }
@@ -4123,7 +4129,7 @@
              if (1 != MHD_pipe_write_ (daemon->worker_pool[i].wpipe[1], "e", 
1))
                MHD_PANIC ("failed to signal shutdown via pipe");
            }
-         if (0 != pthread_join (daemon->worker_pool[i].pid, NULL))
+         if (0 != MHD_join_thread_ (daemon->worker_pool[i].pid))
              MHD_PANIC ("Failed to join a thread\n");
          close_all_connections (&daemon->worker_pool[i]);
          (void) MHD_mutex_destroy_ 
(&daemon->worker_pool[i].cleanup_connection_mutex);
@@ -4152,7 +4158,7 @@
          ((0 != (daemon->options & MHD_USE_SELECT_INTERNALLY))
           && (0 == daemon->worker_pool_size)))
        {
-         if (0 != pthread_join (daemon->pid, NULL))
+         if (0 != MHD_join_thread_ (daemon->pid))
            {
              MHD_PANIC ("Failed to join a thread\n");
            }
@@ -4380,13 +4386,44 @@
 #define FUNC_DESTRUCTOR(f) _MHD_EXTERN void f
 #endif  // __GNUC__
 
-#if HTTPS_SUPPORT
-#if GCRYPT_VERSION_NUMBER < 0x010600
+#if HTTPS_SUPPORT && GCRYPT_VERSION_NUMBER < 0x010600
+#if defined(MHD_USE_POSIX_THREADS)
 GCRY_THREAD_OPTION_PTHREAD_IMPL;
-#endif
-#endif
+#elif defined(MHD_W32_MUTEX_)
+static int gcry_w32_mutex_init (void **ppmtx)
+{
+  *ppmtx = malloc (sizeof (MHD_mutex_));
 
+  if (NULL == *ppmtx)
+    return ENOMEM;
 
+  if (MHD_YES != MHD_mutex_create_ ((MHD_mutex_*)*ppmtx))
+    {
+      free (*ppmtx);
+      *ppmtx = NULL;
+      return EPERM;
+    }
+
+  return 0;
+}
+static int gcry_w32_mutex_destroy (void **ppmtx)
+  { int res = (MHD_YES == MHD_mutex_destroy_ ((MHD_mutex_*)*ppmtx)) ? 0 : 1;
+    free (*ppmtx); return res; }
+static int gcry_w32_mutex_lock (void **ppmtx)
+  { return (MHD_YES == MHD_mutex_lock_ ((MHD_mutex_*)*ppmtx)) ? 0 : 1; }
+static int gcry_w32_mutex_unlock (void **ppmtx)
+  { return (MHD_YES == MHD_mutex_unlock_ ((MHD_mutex_*)*ppmtx)) ? 0 : 1; }
+
+static struct gcry_thread_cbs gcry_threads_w32 = {
+  (GCRY_THREAD_OPTION_USER | (GCRY_THREAD_OPTION_VERSION << 8)),
+  NULL, gcry_w32_mutex_init, gcry_w32_mutex_destroy,
+  gcry_w32_mutex_lock, gcry_w32_mutex_unlock,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL };
+
+#endif // defined(MHD_W32_MUTEX_)
+#endif // HTTPS_SUPPORT && GCRYPT_VERSION_NUMBER < 0x010600
+
+
 /**
  * Initialize do setup work.
  */
@@ -4405,8 +4442,13 @@
 #endif
 #if HTTPS_SUPPORT
 #if GCRYPT_VERSION_NUMBER < 0x010600
+#if defined(MHD_USE_POSIX_THREADS)
   if (0 != gcry_control (GCRYCTL_SET_THREAD_CBS, &gcry_threads_pthread))
     MHD_PANIC ("Failed to initialise multithreading in libgcrypt\n");
+#elif defined(MHD_W32_MUTEX_)
+  if (0 != gcry_control (GCRYCTL_SET_THREAD_CBS, &gcry_threads_w32))
+    MHD_PANIC ("Failed to initialise multithreading in libgcrypt\n");
+#endif // defined(MHD_W32_MUTEX_)
   gcry_check_version (NULL);
 #else
   if (NULL == gcry_check_version ("1.6.0"))

Modified: libmicrohttpd/src/microhttpd/internal.h
===================================================================
--- libmicrohttpd/src/microhttpd/internal.h     2014-04-08 14:36:33 UTC (rev 
32977)
+++ libmicrohttpd/src/microhttpd/internal.h     2014-04-08 14:46:06 UTC (rev 
32978)
@@ -637,10 +637,10 @@
   struct sockaddr *addr;
 
   /**
-   * Thread for this connection (if we are using
+   * Thread handle for this connection (if we are using
    * one thread per connection).
    */
-  pthread_t pid;
+  MHD_thread_handle_ pid;
 
   /**
    * Size of read_buffer (in bytes).  This value indicates
@@ -1070,9 +1070,9 @@
   unsigned int worker_pool_size;
 
   /**
-   * PID of the select thread (if we have internal select)
+   * The select thread handle (if we have internal select)
    */
-  pthread_t pid;
+  MHD_thread_handle_ pid;
 
   /**
    * Mutex for per-IP connection counts.

Modified: libmicrohttpd/src/testcurl/Makefile.am
===================================================================
--- libmicrohttpd/src/testcurl/Makefile.am      2014-04-08 14:36:33 UTC (rev 
32977)
+++ libmicrohttpd/src/testcurl/Makefile.am      2014-04-08 14:46:06 UTC (rev 
32978)
@@ -25,7 +25,6 @@
 if HAVE_CURL
 check_PROGRAMS = \
   test_start_stop \
-  test_quiesce \
   test_get \
   test_get_sendfile \
   test_urlparse \
@@ -49,6 +48,10 @@
   $(CURL_FORK_TEST) \
   perf_get $(PERF_GET_CONCURRENT)
 
+if HAVE_POSIX_THREADS
+check_PROGRAMS += \
+  test_quiesce
+endif
 
 if HAVE_POSTPROCESSOR
  check_PROGRAMS += \

Modified: libmicrohttpd/src/testcurl/https/Makefile.am
===================================================================
--- libmicrohttpd/src/testcurl/https/Makefile.am        2014-04-08 14:36:33 UTC 
(rev 32977)
+++ libmicrohttpd/src/testcurl/https/Makefile.am        2014-04-08 14:46:06 UTC 
(rev 32978)
@@ -8,6 +8,11 @@
   TEST_HTTPS_SNI = test_https_sni
 endif
 
+if HAVE_POSIX_THREADS
+  HTTPS_PARALLEL_TESTS = test_https_get_parallel \
+  test_https_get_parallel_threads
+endif
+
 CPU_COUNT_DEF = -DCPU_COUNT=$(CPU_COUNT)
 
 AM_CPPFLAGS = \
@@ -23,8 +28,7 @@
   test_https_get \
   $(TEST_HTTPS_SNI) \
   test_https_get_select \
-  test_https_get_parallel \
-  test_https_get_parallel_threads \
+  $(HTTPS_PARALLEL_TESTS) \
   test_https_session_info \
   test_https_time_out \
   test_empty_response
@@ -38,8 +42,7 @@
   test_https_get \
   $(TEST_HTTPS_SNI) \
   test_https_get_select \
-  test_https_get_parallel \
-  test_https_get_parallel_threads \
+  $(HTTPS_PARALLEL_TESTS) \
   test_https_session_info \
   test_https_time_out \
   test_tls_authentication \

Modified: libmicrohttpd/src/testcurl/https/test_https_get_parallel.c
===================================================================
--- libmicrohttpd/src/testcurl/https/test_https_get_parallel.c  2014-04-08 
14:36:33 UTC (rev 32977)
+++ libmicrohttpd/src/testcurl/https/test_https_get_parallel.c  2014-04-08 
14:46:06 UTC (rev 32978)
@@ -30,6 +30,7 @@
 #include <sys/stat.h>
 #include <limits.h>
 #include <curl/curl.h>
+#include <pthread.h>
 #include <gcrypt.h>
 #include "tls_test_common.h"
 

Modified: libmicrohttpd/src/testcurl/https/test_https_get_parallel_threads.c
===================================================================
--- libmicrohttpd/src/testcurl/https/test_https_get_parallel_threads.c  
2014-04-08 14:36:33 UTC (rev 32977)
+++ libmicrohttpd/src/testcurl/https/test_https_get_parallel_threads.c  
2014-04-08 14:46:06 UTC (rev 32978)
@@ -32,6 +32,7 @@
 #include <sys/stat.h>
 #include <limits.h>
 #include <curl/curl.h>
+#include <pthread.h>
 #include <gcrypt.h>
 #include "tls_test_common.h"
 

Modified: libmicrohttpd/src/testcurl/test_quiesce.c
===================================================================
--- libmicrohttpd/src/testcurl/test_quiesce.c   2014-04-08 14:36:33 UTC (rev 
32977)
+++ libmicrohttpd/src/testcurl/test_quiesce.c   2014-04-08 14:46:06 UTC (rev 
32978)
@@ -33,6 +33,7 @@
 #include <string.h>
 #include <time.h>
 #include <sys/types.h>
+#include <pthread.h>
 
 #ifndef WINDOWS
 #include <unistd.h>




reply via email to

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