Fixed build --without-threads

TODO: Fully fix testsuite for builds without threads
This commit is contained in:
Evgeny Grin (Karlson2k)
2020-12-27 19:38:33 +03:00
parent 0592f4e2c0
commit 7bc79627ff
7 changed files with 64 additions and 8 deletions
+6
View File
@@ -74,6 +74,12 @@
#define MHD_LINUX_SOLARIS_SENDFILE 1
#endif /* HAVE_LINUX_SENDFILE || HAVE_SOLARIS_SENDFILE */
#if defined(MHD_USE_POSIX_THREADS) || defined(MHD_USE_W32_THREADS)
# ifndef MHD_USE_THREADS
# define MHD_USE_THREADS 1
# endif
#endif /* MHD_USE_POSIX_THREADS || MHD_USE_W32_THREADS */
#if OS390
#define _OPEN_THREADS
#define _OPEN_SYS_SOCK_IPV6
+8
View File
@@ -646,8 +646,10 @@ MHD_connection_close_ (struct MHD_Connection *connection,
struct MHD_Daemon *daemon = connection->daemon;
struct MHD_Response *resp = connection->response;
#ifdef MHD_USE_THREADS
mhd_assert ( (0 == (daemon->options & MHD_USE_INTERNAL_POLLING_THREAD)) || \
MHD_thread_ID_match_current_ (connection->pid) );
#endif /* MHD_USE_THREADS */
MHD_connection_mark_closed_ (connection);
if (NULL != resp)
@@ -682,9 +684,11 @@ MHD_connection_finish_forward_ (struct MHD_Connection *connection)
struct MHD_Daemon *daemon = connection->daemon;
struct MHD_UpgradeResponseHandle *urh = connection->urh;
#ifdef MHD_USE_THREADS
mhd_assert ( (0 == (daemon->options & MHD_USE_INTERNAL_POLLING_THREAD)) || \
(0 != (daemon->options & MHD_USE_THREAD_PER_CONNECTION)) || \
MHD_thread_ID_match_current_ (daemon->pid) );
#endif /* MHD_USE_THREADS */
if (0 == (daemon->options & MHD_USE_TLS))
return; /* Nothing to do with non-TLS connection. */
@@ -3148,8 +3152,10 @@ static void
cleanup_connection (struct MHD_Connection *connection)
{
struct MHD_Daemon *daemon = connection->daemon;
#ifdef MHD_USE_THREADS
mhd_assert ( (0 == (daemon->options & MHD_USE_INTERNAL_POLLING_THREAD)) || \
MHD_thread_ID_match_current_ (connection->pid) );
#endif /* MHD_USE_THREADS */
if (connection->in_cleanup)
return; /* Prevent double cleanup. */
@@ -3229,8 +3235,10 @@ MHD_connection_handle_idle (struct MHD_Connection *connection)
char *line;
size_t line_len;
enum MHD_Result ret;
#ifdef MHD_USE_THREADS
mhd_assert ( (0 == (daemon->options & MHD_USE_INTERNAL_POLLING_THREAD)) || \
MHD_thread_ID_match_current_ (connection->pid) );
#endif /* MHD_USE_THREADS */
connection->in_idle = true;
while (! connection->suspended)
+28 -7
View File
@@ -1346,8 +1346,10 @@ process_urh (struct MHD_UpgradeResponseHandle *urh)
* of processing - it will be processed on next iteration. */
bool was_closed;
#ifdef MHD_USE_THREADS
mhd_assert ( (0 == (daemon->options & MHD_USE_INTERNAL_POLLING_THREAD)) || \
MHD_thread_ID_match_current_ (connection->pid) );
#endif /* MHD_USE_THREADS */
if (daemon->shutdown)
{
/* Daemon shutting down, application will not receive any more data. */
@@ -2609,6 +2611,7 @@ new_connection_prepare_ (struct MHD_Daemon *daemon,
}
#ifdef MHD_USE_THREADS
/**
* Close prepared, but not yet processed connection.
* @param daemon the daemon
@@ -2642,6 +2645,9 @@ new_connection_close_ (struct MHD_Daemon *daemon,
}
#endif /* MHD_USE_THREADS */
/**
* Finally insert the new connection to the list of connections
* served by the daemon and start processing.
@@ -2660,10 +2666,12 @@ new_connection_process_ (struct MHD_Daemon *daemon,
mhd_assert (connection->daemon == daemon);
#ifdef MHD_USE_THREADS
/* Function manipulate connection and timeout DL-lists,
* must be called only within daemon thread. */
mhd_assert ( (0 == (daemon->options & MHD_USE_INTERNAL_POLLING_THREAD)) || \
MHD_thread_ID_match_current_ (daemon->pid) );
#endif /* MHD_USE_THREADS */
/* Allocate memory pool in the processing thread so
* intensively used memory area is allocated in "good"
@@ -2992,11 +3000,10 @@ internal_suspend_connection_ (struct MHD_Connection *connection)
{
struct MHD_Daemon *daemon = connection->daemon;
#if defined(MHD_USE_POSIX_THREADS) || defined(MHD_USE_W32_THREADS)
mhd_assert ( (0 == (daemon->options & MHD_USE_INTERNAL_POLLING_THREAD)) || \
(0 != (daemon->options & MHD_USE_THREAD_PER_CONNECTION)) || \
MHD_thread_ID_match_current_ (daemon->pid) );
#if defined(MHD_USE_POSIX_THREADS) || defined(MHD_USE_W32_THREADS)
MHD_mutex_lock_chk_ (&daemon->cleanup_connection_mutex);
#endif
if (connection->resuming)
@@ -3091,9 +3098,11 @@ MHD_suspend_connection (struct MHD_Connection *connection)
{
struct MHD_Daemon *const daemon = connection->daemon;
#ifdef MHD_USE_THREADS
mhd_assert ( (0 == (daemon->options & MHD_USE_INTERNAL_POLLING_THREAD)) || \
(0 != (daemon->options & MHD_USE_THREAD_PER_CONNECTION)) || \
MHD_thread_ID_match_current_ (daemon->pid) );
#endif /* MHD_USE_THREADS */
if (0 == (daemon->options & MHD_TEST_ALLOW_SUSPEND_RESUME))
MHD_PANIC (_ (
@@ -3465,8 +3474,10 @@ MHD_accept_connection (struct MHD_Daemon *daemon)
bool sk_nonbl;
bool sk_spipe_supprs;
#ifdef MHD_USE_THREADS
mhd_assert ( (0 == (daemon->options & MHD_USE_INTERNAL_POLLING_THREAD)) || \
MHD_thread_ID_match_current_ (daemon->pid) );
#endif /* MHD_USE_THREADS */
addrlen = sizeof (addrstorage);
memset (addr,
@@ -3630,10 +3641,10 @@ static void
MHD_cleanup_connections (struct MHD_Daemon *daemon)
{
struct MHD_Connection *pos;
#if defined(MHD_USE_POSIX_THREADS) || defined(MHD_USE_W32_THREADS)
mhd_assert ( (0 == (daemon->options & MHD_USE_INTERNAL_POLLING_THREAD)) || \
MHD_thread_ID_match_current_ (daemon->pid) );
#if defined(MHD_USE_POSIX_THREADS) || defined(MHD_USE_W32_THREADS)
MHD_mutex_lock_chk_ (&daemon->cleanup_connection_mutex);
#endif
while (NULL != (pos = daemon->cleanup_tail))
@@ -3746,8 +3757,10 @@ MHD_get_timeout (struct MHD_Daemon *daemon,
struct MHD_Connection *pos;
bool have_timeout;
#ifdef MHD_USE_THREADS
mhd_assert ( (0 == (daemon->options & MHD_USE_INTERNAL_POLLING_THREAD)) || \
MHD_thread_ID_match_current_ (daemon->pid) );
#endif /* MHD_USE_THREADS */
if (0 != (daemon->options & MHD_USE_THREAD_PER_CONNECTION))
{
@@ -4558,8 +4571,10 @@ run_epoll_for_upgrade (struct MHD_Daemon *daemon)
struct MHD_UpgradeResponseHandle *pos;
struct MHD_UpgradeResponseHandle *prev;
#ifdef MHD_USE_THREADS
mhd_assert ( (0 == (daemon->options & MHD_USE_INTERNAL_POLLING_THREAD)) || \
MHD_thread_ID_match_current_ (daemon->pid) );
#endif /* MHD_USE_THREADS */
num_events = MAX_EVENTS;
while (0 != num_events)
@@ -5044,8 +5059,10 @@ close_connection (struct MHD_Connection *pos)
{
struct MHD_Daemon *daemon = pos->daemon;
#ifdef MHD_USE_THREADS
mhd_assert ( (0 == (daemon->options & MHD_USE_INTERNAL_POLLING_THREAD)) || \
MHD_thread_ID_match_current_ (daemon->pid) );
#endif /* MHD_USE_THREADS */
if (0 != (daemon->options & MHD_USE_THREAD_PER_CONNECTION))
{
@@ -7101,16 +7118,16 @@ close_all_connections (struct MHD_Daemon *daemon)
const bool used_tls = (0 != (daemon->options & MHD_USE_TLS));
#endif /* HTTPS_SUPPORT && UPGRADE_SUPPORT */
#ifdef MHD_USE_THREADS
mhd_assert ( (0 == (daemon->options & MHD_USE_INTERNAL_POLLING_THREAD)) || \
(0 != (daemon->options & MHD_USE_THREAD_PER_CONNECTION)) || \
MHD_thread_ID_match_current_ (daemon->pid) );
#if defined(MHD_USE_POSIX_THREADS) || defined(MHD_USE_W32_THREADS)
mhd_assert (NULL == daemon->worker_pool);
#endif
#endif /* MHD_USE_THREADS */
mhd_assert (daemon->shutdown);
/* Remove externally added new connections that are
#ifdef MHD_USE_THREADS
/* Remove externally added new connections that are
* not processed by the daemon thread. */
while (NULL != (pos = daemon->new_connections_tail))
{
@@ -7120,6 +7137,8 @@ close_all_connections (struct MHD_Daemon *daemon)
pos);
new_connection_close_ (daemon, pos);
}
#endif /* MHD_USE_THREADS */
#if defined(HTTPS_SUPPORT) && defined(UPGRADE_SUPPORT)
/* give upgraded HTTPS connections a chance to finish */
/* 'daemon->urh_head' is not used in thread-per-connection mode. */
@@ -7196,6 +7215,7 @@ close_all_connections (struct MHD_Daemon *daemon)
MHD_PANIC (_ (
"MHD_stop_daemon() called while we have suspended connections.\n"));
#if defined(UPGRADE_SUPPORT) && defined(HTTPS_SUPPORT)
#ifdef MHD_USE_THREADS
if (upg_allowed && used_tls && used_thr_p_c)
{
/* "Upgraded" threads may be running in parallel. Connection will not be
@@ -7221,6 +7241,7 @@ close_all_connections (struct MHD_Daemon *daemon)
}
}
}
#endif /* MHD_USE_THREADS */
#endif
for (pos = daemon->connections_tail; NULL != pos; pos = pos->prev)
{
+1 -1
View File
@@ -69,8 +69,8 @@
#if defined(MHD_USE_POSIX_THREADS) || defined(MHD_USE_W32_THREADS)
#include "mhd_threads.h"
#include "mhd_locks.h"
#endif
#include "mhd_locks.h"
#include "mhd_sockets.h"
#include "mhd_itc_types.h"
+13
View File
@@ -39,6 +39,8 @@
#include "mhd_options.h"
#ifdef MHD_USE_THREADS
#if defined(MHD_USE_W32_THREADS)
# define MHD_W32_MUTEX_ 1
# ifndef WIN32_LEAN_AND_MEAN
@@ -182,5 +184,16 @@ typedef CRITICAL_SECTION MHD_mutex_;
MHD_PANIC (_ ("Failed to unlock mutex.\n")); \
} while (0)
#else /* ! MHD_USE_THREADS */
#define MHD_mutex_init_(ignore) (! 0)
#define MHD_mutex_destroy_(ignore) (! 0)
#define MHD_mutex_destroy_chk_(ignore) (void)0
#define MHD_mutex_lock_(ignore) (! 0)
#define MHD_mutex_lock_chk_(ignore) (void)0
#define MHD_mutex_unlock_(ignore) (! 0)
#define MHD_mutex_unlock_chk_(ignore) (void)0
#endif /* ! MHD_USE_THREADS */
#endif /* ! MHD_LOCKS_H */
+6
View File
@@ -47,11 +47,17 @@
# undef HAVE_CONFIG_H
# include <pthread.h>
# define HAVE_CONFIG_H 1
# ifndef MHD_USE_THREADS
# define MHD_USE_THREADS 1
# endif
#elif defined(MHD_USE_W32_THREADS)
# ifndef WIN32_LEAN_AND_MEAN
# define WIN32_LEAN_AND_MEAN 1
# endif /* !WIN32_LEAN_AND_MEAN */
# include <windows.h>
# ifndef MHD_USE_THREADS
# define MHD_USE_THREADS 1
# endif
#else
# error No threading API is available.
#endif
+2
View File
@@ -951,8 +951,10 @@ MHD_response_execute_upgrade_ (struct MHD_Response *response,
struct MHD_UpgradeResponseHandle *urh;
size_t rbo;
#ifdef MHD_USE_THREADS
mhd_assert ( (0 == (daemon->options & MHD_USE_INTERNAL_POLLING_THREAD)) || \
MHD_thread_ID_match_current_ (connection->pid) );
#endif /* MHD_USE_THREADS */
if (0 == (daemon->options & MHD_ALLOW_UPGRADE))
return MHD_NO;