[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] [libmicrohttpd] 06/06: Make testsuite parallel build compat
From: |
gnunet |
Subject: |
[GNUnet-SVN] [libmicrohttpd] 06/06: Make testsuite parallel build compatible (part 1) |
Date: |
Thu, 15 Jun 2017 23:43:31 +0200 |
This is an automated email from the git hooks/post-receive script.
karlson2k pushed a commit to branch master
in repository libmicrohttpd.
commit e8d937beb5e0bf118c381846f2392cab973a2528
Author: Evgeny Grin (Karlson2k) <address@hidden>
AuthorDate: Fri Jun 16 00:41:21 2017 +0300
Make testsuite parallel build compatible (part 1)
---
src/microhttpd/test_daemon.c | 14 +--
src/microhttpd/test_upgrade.c | 14 ++-
src/testcurl/perf_get.c | 52 +++++++-
src/testcurl/perf_get_concurrent.c | 48 ++++++-
src/testcurl/test_callback.c | 21 +++-
src/testcurl/test_concurrent_stop.c | 25 +++-
src/testcurl/test_delete.c | 76 +++++++++--
src/testcurl/test_digestauth.c | 20 ++-
src/testcurl/test_digestauth_with_arguments.c | 20 ++-
src/testcurl/test_get.c | 173 ++++++++++++++++++++++----
src/testcurl/test_get_chunked.c | 76 +++++++++--
src/testcurl/test_get_response_cleanup.c | 98 +++++++++++++--
src/testcurl/test_get_sendfile.c | 125 ++++++++++++++++---
src/testcurl/test_iplimit.c | 45 ++++++-
src/testcurl/test_large_put.c | 100 +++++++++++++--
src/testcurl/test_long_header.c | 45 ++++++-
src/testcurl/test_options.c | 8 +-
src/testcurl/test_parse_cookies.c | 23 +++-
src/testcurl/test_post.c | 115 +++++++++++++++--
src/testcurl/test_post_loop.c | 88 +++++++++++--
src/testcurl/test_postform.c | 92 ++++++++++++--
src/testcurl/test_process_arguments.c | 23 +++-
src/testcurl/test_process_headers.c | 96 ++++++++++++--
src/testcurl/test_put.c | 94 ++++++++++++--
src/testcurl/test_put_chunked.c | 76 +++++++++--
src/testcurl/test_quiesce.c | 38 +++++-
src/testcurl/test_quiesce_stream.c | 25 +++-
src/testcurl/test_start_stop.c | 8 +-
src/testcurl/test_termination.c | 20 ++-
src/testcurl/test_timeout.c | 46 ++++++-
src/testcurl/test_urlparse.c | 23 +++-
31 files changed, 1537 insertions(+), 190 deletions(-)
diff --git a/src/microhttpd/test_daemon.c b/src/microhttpd/test_daemon.c
index 9fc8e16d..bd201512 100644
--- a/src/microhttpd/test_daemon.c
+++ b/src/microhttpd/test_daemon.c
@@ -89,7 +89,7 @@ testStartStop ()
struct MHD_Daemon *d;
d = MHD_start_daemon (MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG,
- 1080,
+ 0,
&apc_nothing, NULL,
&ahc_nothing, NULL,
MHD_OPTION_END);
@@ -97,7 +97,7 @@ testStartStop ()
{
fprintf (stderr,
"Failed to start daemon on port %u\n",
- 1080);
+ 0);
exit (77);
}
MHD_stop_daemon (d);
@@ -114,7 +114,7 @@ testExternalRun ()
int i;
d = MHD_start_daemon (MHD_USE_ERROR_LOG,
- 1081,
+ 0,
&apc_all, NULL,
&ahc_nothing, NULL,
MHD_OPTION_END);
@@ -123,7 +123,7 @@ testExternalRun ()
{
fprintf (stderr,
"Failed to start daemon on port %u\n",
- 1081);
+ 0);
exit (77);
}
i = 0;
@@ -158,7 +158,7 @@ testThread ()
struct MHD_Daemon *d;
d = MHD_start_daemon (MHD_USE_ERROR_LOG | MHD_USE_INTERNAL_POLLING_THREAD,
- 1082,
+ 0,
&apc_all, NULL,
&ahc_nothing, NULL,
MHD_OPTION_END);
@@ -187,7 +187,7 @@ testMultithread ()
struct MHD_Daemon *d;
d = MHD_start_daemon (MHD_USE_ERROR_LOG | MHD_USE_INTERNAL_POLLING_THREAD |
MHD_USE_THREAD_PER_CONNECTION,
- 1083,
+ 0,
&apc_all, NULL,
&ahc_nothing, NULL,
MHD_OPTION_END);
@@ -196,7 +196,7 @@ testMultithread ()
{
fprintf (stderr,
"Failed to start daemon on port %u\n",
- 1083);
+ 0);
exit (77);
}
if (MHD_run (d) != MHD_NO)
diff --git a/src/microhttpd/test_upgrade.c b/src/microhttpd/test_upgrade.c
index 64b47e5d..b1a234cb 100644
--- a/src/microhttpd/test_upgrade.c
+++ b/src/microhttpd/test_upgrade.c
@@ -982,6 +982,7 @@ test_upgrade (int flags,
wr_socket sock;
struct sockaddr_in sa;
const union MHD_DaemonInfo *real_flags;
+ const union MHD_DaemonInfo *dinfo;
#if defined(HTTPS_SUPPORT) && defined(HAVE_FORK) && defined(HAVE_WAITPID)
pid_t pid = -1;
#endif /* HTTPS_SUPPORT && HAVE_FORK && HAVE_WAITPID */
@@ -990,7 +991,8 @@ test_upgrade (int flags,
if (!test_tls)
d = MHD_start_daemon (flags | MHD_USE_ERROR_LOG | MHD_ALLOW_UPGRADE,
- 1080,
+
MHD_is_feature_supported(MHD_FEATURE_AUTODETECT_BIND_PORT) ?
+ 0 : 1090,
NULL, NULL,
&ahc_upgrade, NULL,
MHD_OPTION_URI_LOG_CALLBACK, &log_cb, NULL,
@@ -1001,7 +1003,8 @@ test_upgrade (int flags,
#ifdef HTTPS_SUPPORT
else
d = MHD_start_daemon (flags | MHD_USE_ERROR_LOG | MHD_ALLOW_UPGRADE |
MHD_USE_TLS,
- 1080,
+
MHD_is_feature_supported(MHD_FEATURE_AUTODETECT_BIND_PORT) ?
+ 0 : 1090,
NULL, NULL,
&ahc_upgrade, NULL,
MHD_OPTION_URI_LOG_CALLBACK, &log_cb, NULL,
@@ -1017,13 +1020,16 @@ test_upgrade (int flags,
real_flags = MHD_get_daemon_info(d, MHD_DAEMON_INFO_FLAGS);
if (NULL == real_flags)
abort ();
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ abort ();
if (!test_tls || TLS_LIB_GNUTLS == use_tls_tool)
{
sock = test_tls ? wr_create_tls_sckt () : wr_create_plain_sckt ();
if (WR_BAD == sock)
abort ();
sa.sin_family = AF_INET;
- sa.sin_port = htons (1080);
+ sa.sin_port = htons (dinfo->port);
sa.sin_addr.s_addr = htonl (INADDR_LOOPBACK);
if (0 != wr_connect (sock,
(struct sockaddr *) &sa,
@@ -1034,7 +1040,7 @@ test_upgrade (int flags,
{
#if defined(HTTPS_SUPPORT) && defined(HAVE_FORK) && defined(HAVE_WAITPID)
MHD_socket tls_fork_sock;
- if (-1 == (pid = gnutlscli_connect (&tls_fork_sock, 1080)))
+ if (-1 == (pid = gnutlscli_connect (&tls_fork_sock, dinfo->port)))
{
MHD_stop_daemon (d);
return 4;
diff --git a/src/testcurl/perf_get.c b/src/testcurl/perf_get.c
index b215c837..8e5902d8 100644
--- a/src/testcurl/perf_get.c
+++ b/src/testcurl/perf_get.c
@@ -188,7 +188,8 @@ testInternalGet (int port, int poll_flag)
unsigned int i;
char url[64];
- sprintf(url, "http://127.0.0.1:%d/hello_world", port);
+ if (MHD_NO != MHD_is_feature_supported(MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
cbc.buf = buf;
cbc.size = 2048;
@@ -196,6 +197,15 @@ testInternalGet (int port, int poll_flag)
port, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
if (d == NULL)
return 1;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
+ sprintf(url, "http://127.0.0.1:%d/hello_world", port);
start_timer ();
for (i=0;i<ROUNDS;i++)
{
@@ -249,7 +259,8 @@ testMultithreadedGet (int port, int poll_flag)
unsigned int i;
char url[64];
- sprintf(url, "http://127.0.0.1:%d/hello_world", port);
+ if (MHD_NO != MHD_is_feature_supported(MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
cbc.buf = buf;
cbc.size = 2048;
@@ -257,6 +268,15 @@ testMultithreadedGet (int port, int poll_flag)
port, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
if (d == NULL)
return 16;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
+ sprintf(url, "http://127.0.0.1:%d/hello_world", port);
start_timer ();
for (i=0;i<ROUNDS;i++)
{
@@ -310,7 +330,8 @@ testMultithreadedPoolGet (int port, int poll_flag)
unsigned int i;
char url[64];
- sprintf(url, "http://127.0.0.1:%d/hello_world", port);
+ if (MHD_NO != MHD_is_feature_supported(MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
cbc.buf = buf;
cbc.size = 2048;
@@ -319,6 +340,15 @@ testMultithreadedPoolGet (int port, int poll_flag)
MHD_OPTION_THREAD_POOL_SIZE, CPU_COUNT,
MHD_OPTION_END);
if (d == NULL)
return 16;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
+ sprintf(url, "http://127.0.0.1:%d/hello_world", port);
start_timer ();
for (i=0;i<ROUNDS;i++)
{
@@ -385,7 +415,8 @@ testExternalGet (int port)
unsigned int i;
char url[64];
- sprintf(url, "http://127.0.0.1:%d/hello_world", port);
+ if (MHD_NO != MHD_is_feature_supported(MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
multi = NULL;
cbc.buf = buf;
@@ -394,6 +425,15 @@ testExternalGet (int port)
port, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
if (d == NULL)
return 256;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
+ sprintf(url, "http://127.0.0.1:%d/hello_world", port);
start_timer ();
multi = curl_multi_init ();
if (multi == NULL)
@@ -514,10 +554,12 @@ int
main (int argc, char *const *argv)
{
unsigned int errorCount = 0;
- int port = 1081;
+ int port = 1130;
oneone = (NULL != strrchr (argv[0], (int) '/')) ?
(NULL != strstr (strrchr (argv[0], (int) '/'), "11")) : 0;
+ if (oneone)
+ port += 15;
if (0 != curl_global_init (CURL_GLOBAL_WIN32))
return 2;
response = MHD_create_response_from_buffer (strlen ("/hello_world"),
diff --git a/src/testcurl/perf_get_concurrent.c
b/src/testcurl/perf_get_concurrent.c
index 888e77eb..d4bbf753 100644
--- a/src/testcurl/perf_get_concurrent.c
+++ b/src/testcurl/perf_get_concurrent.c
@@ -247,11 +247,22 @@ testInternalGet (int port, int poll_flag)
(poll_flag & MHD_USE_EPOLL) ? "internal
thread with epoll" : "internal thread with select()");
const char * ret_val;
+ if (MHD_NO != MHD_is_feature_supported(MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+
signal_done = 0;
d = MHD_start_daemon (MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG |
poll_flag,
port, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
if (d == NULL)
return 1;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
start_timer ();
ret_val = do_gets ((void*)(intptr_t)port);
if (!ret_val)
@@ -277,11 +288,22 @@ testMultithreadedGet (int port, int poll_flag)
: "internal thread with select() and
thread per connection");
const char * ret_val;
+ if (MHD_NO != MHD_is_feature_supported(MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+
signal_done = 0;
d = MHD_start_daemon (MHD_USE_THREAD_PER_CONNECTION |
MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG | poll_flag,
port, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
if (d == NULL)
return 16;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
start_timer ();
ret_val = do_gets ((void*)(intptr_t)port);
if (!ret_val)
@@ -306,12 +328,23 @@ testMultithreadedPoolGet (int port, int poll_flag)
(poll_flag & MHD_USE_EPOLL) ? "internal
thread poll with epoll" : "internal thread pool with select()");
const char * ret_val;
+ if (MHD_NO != MHD_is_feature_supported(MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+
signal_done = 0 ;
d = MHD_start_daemon (MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG |
poll_flag,
port, NULL, NULL, &ahc_echo, "GET",
MHD_OPTION_THREAD_POOL_SIZE, CPU_COUNT,
MHD_OPTION_END);
if (d == NULL)
return 16;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
start_timer ();
ret_val = do_gets ((void*)(intptr_t)port);
if (!ret_val)
@@ -342,11 +375,22 @@ testExternalGet (int port)
char *ret_val;
int ret = 0;
+ if (MHD_NO != MHD_is_feature_supported(MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+
signal_done = 0;
d = MHD_start_daemon (MHD_USE_ERROR_LOG,
port, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
if (d == NULL)
return 256;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
if (0 != pthread_create (&pid, NULL,
&do_gets, (void*)(intptr_t)port))
{
@@ -402,10 +446,12 @@ int
main (int argc, char *const *argv)
{
unsigned int errorCount = 0;
- int port = 1081;
+ int port = 1100;
oneone = (NULL != strrchr (argv[0], (int) '/')) ?
(NULL != strstr (strrchr (argv[0], (int) '/'), "11")) : 0;
+ if (oneone)
+ port += 15;
if (0 != curl_global_init (CURL_GLOBAL_WIN32))
return 2;
response = MHD_create_response_from_buffer (strlen ("/hello_world"),
diff --git a/src/testcurl/test_callback.c b/src/testcurl/test_callback.c
index 4af997d3..6901be0f 100644
--- a/src/testcurl/test_callback.c
+++ b/src/testcurl/test_callback.c
@@ -111,16 +111,33 @@ main(int argc, char **argv)
int running;
struct timeval tv;
int extra;
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ port = 1140;
d = MHD_start_daemon(0,
- 8000,
+ port,
NULL,
NULL,
&callback,
NULL,
MHD_OPTION_END);
+ if (d == NULL)
+ return 32;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 48; }
+ port = (int)dinfo->port;
+ }
c = curl_easy_init ();
- curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:8000/");
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, &discard_buffer);
curl_easy_setopt (c, CURLOPT_FAILONERROR, 1);
curl_easy_setopt (c, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
diff --git a/src/testcurl/test_concurrent_stop.c
b/src/testcurl/test_concurrent_stop.c
index 61408960..67c48e1c 100644
--- a/src/testcurl/test_concurrent_stop.c
+++ b/src/testcurl/test_concurrent_stop.c
@@ -217,6 +217,14 @@ testMultithreadedGet (int port,
MHD_OPTION_END);
if (d == NULL)
return 16;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
p = start_gets (port);
sleep (1);
MHD_stop_daemon (d);
@@ -240,6 +248,14 @@ testMultithreadedPoolGet (int port,
MHD_OPTION_END);
if (d == NULL)
return 16;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
p = start_gets (port);
sleep (1);
MHD_stop_daemon (d);
@@ -252,10 +268,17 @@ int
main (int argc, char *const *argv)
{
unsigned int errorCount = 0;
- int port = 1081;
+ int port;
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ port = 1142;
+
oneone = (NULL != strrchr (argv[0], (int) '/')) ?
(NULL != strstr (strrchr (argv[0], (int) '/'), "11")) : 0;
+ if (0 != port && oneone)
+ port += 5;
if (0 != curl_global_init (CURL_GLOBAL_WIN32))
return 2;
response = MHD_create_response_from_buffer (strlen ("/hello_world"),
diff --git a/src/testcurl/test_delete.c b/src/testcurl/test_delete.c
index fc0b1889..513a5ebd 100644
--- a/src/testcurl/test_delete.c
+++ b/src/testcurl/test_delete.c
@@ -127,17 +127,32 @@ testInternalDelete ()
unsigned int pos = 0;
int done_flag = 0;
CURLcode errornum;
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ port = 1152;
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG,
- 1080,
+ port,
NULL, NULL, &ahc_echo, &done_flag, MHD_OPTION_END);
if (d == NULL)
return 1;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
c = curl_easy_init ();
- curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:1080/hello_world");
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/hello_world");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
curl_easy_setopt (c, CURLOPT_READFUNCTION, &putBuffer);
@@ -185,17 +200,32 @@ testMultithreadedDelete ()
unsigned int pos = 0;
int done_flag = 0;
CURLcode errornum;
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ port = 1153;
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_THREAD_PER_CONNECTION |
MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG,
- 1081,
+ port,
NULL, NULL, &ahc_echo, &done_flag, MHD_OPTION_END);
if (d == NULL)
return 16;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
c = curl_easy_init ();
- curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:1081/hello_world");
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/hello_world");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
curl_easy_setopt (c, CURLOPT_READFUNCTION, &putBuffer);
@@ -243,18 +273,33 @@ testMultithreadedPoolDelete ()
unsigned int pos = 0;
int done_flag = 0;
CURLcode errornum;
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ port = 1154;
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG,
- 1081,
+ port,
NULL, NULL, &ahc_echo, &done_flag,
MHD_OPTION_THREAD_POOL_SIZE, CPU_COUNT,
MHD_OPTION_END);
if (d == NULL)
return 16;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
c = curl_easy_init ();
- curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:1081/hello_world");
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/hello_world");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
curl_easy_setopt (c, CURLOPT_READFUNCTION, &putBuffer);
@@ -317,18 +362,33 @@ testExternalDelete ()
struct timeval tv;
unsigned int pos = 0;
int done_flag = 0;
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ port = 1154;
multi = NULL;
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_ERROR_LOG,
- 1082,
+ port,
NULL, NULL, &ahc_echo, &done_flag, MHD_OPTION_END);
if (d == NULL)
return 256;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
c = curl_easy_init ();
- curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:1082/hello_world");
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/hello_world");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
curl_easy_setopt (c, CURLOPT_READFUNCTION, &putBuffer);
diff --git a/src/testcurl/test_digestauth.c b/src/testcurl/test_digestauth.c
index 57abbbe6..3db08b4b 100644
--- a/src/testcurl/test_digestauth.c
+++ b/src/testcurl/test_digestauth.c
@@ -140,6 +140,13 @@ testDigestAuth ()
size_t off = 0;
char buf[2048];
char rnd[8];
+ int port;
+ char url[128];
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ port = 1165;
cbc.buf = buf;
cbc.size = 2048;
@@ -190,14 +197,23 @@ testDigestAuth ()
}
#endif
d = MHD_start_daemon (MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG,
- 1337, NULL, NULL, &ahc_echo, PAGE,
+ port, NULL, NULL, &ahc_echo, PAGE,
MHD_OPTION_DIGEST_AUTH_RANDOM, sizeof (rnd), rnd,
MHD_OPTION_NONCE_NC_SIZE, 300,
MHD_OPTION_END);
if (d == NULL)
return 1;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
+ sprintf(url, "http://127.0.0.1:%d/bar%%20 foo?a=bü%%20", port);
c = curl_easy_init ();
- curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:1337/bar%20
foo?a=bü%20");
+ curl_easy_setopt (c, CURLOPT_URL, url);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
curl_easy_setopt (c, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
diff --git a/src/testcurl/test_digestauth_with_arguments.c
b/src/testcurl/test_digestauth_with_arguments.c
index 1c4be0d6..3245b046 100644
--- a/src/testcurl/test_digestauth_with_arguments.c
+++ b/src/testcurl/test_digestauth_with_arguments.c
@@ -135,6 +135,13 @@ testDigestAuth ()
size_t off = 0;
char buf[2048];
char rnd[8];
+ int port;
+ char url[128];
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ port = 1160;
cbc.buf = buf;
cbc.size = 2048;
@@ -185,14 +192,23 @@ testDigestAuth ()
}
#endif
d = MHD_start_daemon (MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG,
- 1337, NULL, NULL, &ahc_echo, PAGE,
+ port, NULL, NULL, &ahc_echo, PAGE,
MHD_OPTION_DIGEST_AUTH_RANDOM, sizeof (rnd), rnd,
MHD_OPTION_NONCE_NC_SIZE, 300,
MHD_OPTION_END);
if (d == NULL)
return 1;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
+ sprintf(url, "http://127.0.0.1:%d/foo?key=value", port);
c = curl_easy_init ();
- curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:1337/foo?key=value");
+ curl_easy_setopt (c, CURLOPT_URL, url);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
curl_easy_setopt (c, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
diff --git a/src/testcurl/test_get.c b/src/testcurl/test_get.c
index dc8f9dc4..bc7f5fb5 100644
--- a/src/testcurl/test_get.c
+++ b/src/testcurl/test_get.c
@@ -116,16 +116,35 @@ testInternalGet (int poll_flag)
char buf[2048];
struct CBC cbc;
CURLcode errornum;
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ {
+ port = 1220;
+ if (oneone)
+ port += 20;
+ }
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG |
poll_flag,
- 11080, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
+ port, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
if (d == NULL)
return 1;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
c = curl_easy_init ();
- curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:11080/hello_world");
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/hello_world");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
curl_easy_setopt (c, CURLOPT_FAILONERROR, 1);
@@ -166,16 +185,35 @@ testMultithreadedGet (int poll_flag)
char buf[2048];
struct CBC cbc;
CURLcode errornum;
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ {
+ port = 1221;
+ if (oneone)
+ port += 20;
+ }
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_THREAD_PER_CONNECTION |
MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG | poll_flag,
- 1081, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
+ port, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
if (d == NULL)
return 16;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
c = curl_easy_init ();
- curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:1081/hello_world");
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/hello_world");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
curl_easy_setopt (c, CURLOPT_FAILONERROR, 1);
@@ -216,17 +254,36 @@ testMultithreadedPoolGet (int poll_flag)
char buf[2048];
struct CBC cbc;
CURLcode errornum;
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ {
+ port = 1222;
+ if (oneone)
+ port += 20;
+ }
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG |
poll_flag,
- 1081, NULL, NULL, &ahc_echo, "GET",
+ port, NULL, NULL, &ahc_echo, "GET",
MHD_OPTION_THREAD_POOL_SIZE, CPU_COUNT,
MHD_OPTION_END);
if (d == NULL)
return 16;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
c = curl_easy_init ();
- curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:1081/hello_world");
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/hello_world");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
curl_easy_setopt (c, CURLOPT_FAILONERROR, 1);
@@ -281,17 +338,36 @@ testExternalGet ()
struct CURLMsg *msg;
time_t start;
struct timeval tv;
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ {
+ port = 1223;
+ if (oneone)
+ port += 20;
+ }
multi = NULL;
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_ERROR_LOG,
- 1082, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
+ port, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
if (d == NULL)
return 256;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
c = curl_easy_init ();
- curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:1082/hello_world");
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/hello_world");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
curl_easy_setopt (c, CURLOPT_FAILONERROR, 1);
@@ -401,6 +477,7 @@ testUnknownPortGet (int poll_flag)
char buf[2048];
struct CBC cbc;
CURLcode errornum;
+ int port;
struct sockaddr_in addr;
socklen_t addr_len = sizeof(addr);
@@ -413,24 +490,33 @@ testUnknownPortGet (int poll_flag)
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG |
poll_flag,
- 1, NULL, NULL, &ahc_echo, "GET",
+ 0, NULL, NULL, &ahc_echo, "GET",
MHD_OPTION_SOCK_ADDR, &addr,
MHD_OPTION_END);
- if (d == NULL)
- return 32768;
-
- di = MHD_get_daemon_info (d, MHD_DAEMON_INFO_LISTEN_FD);
- if (di == NULL)
- return 65536;
+ if (MHD_NO == MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ {
+ di = MHD_get_daemon_info (d, MHD_DAEMON_INFO_LISTEN_FD);
+ if (di == NULL)
+ return 65536;
- if (0 != getsockname(di->listen_fd, (struct sockaddr *) &addr, &addr_len))
- return 131072;
+ if (0 != getsockname(di->listen_fd, (struct sockaddr *) &addr,
&addr_len))
+ return 131072;
- if (addr.sin_family != AF_INET)
- return 26214;
+ if (addr.sin_family != AF_INET)
+ return 26214;
+ port = (int)ntohs(addr.sin_port);
+ }
+ else
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
- snprintf(buf, sizeof(buf), "http://127.0.0.1:%hu/hello_world",
- ntohs(addr.sin_port));
+ snprintf(buf, sizeof(buf), "http://127.0.0.1:%d/hello_world",
+ port);
c = curl_easy_init ();
curl_easy_setopt (c, CURLOPT_URL, buf);
@@ -472,11 +558,29 @@ testStopRace (int poll_flag)
struct sockaddr_in sin;
MHD_socket fd;
struct MHD_Daemon *d;
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ {
+ port = 1224;
+ if (oneone)
+ port += 20;
+ }
d = MHD_start_daemon (MHD_USE_THREAD_PER_CONNECTION |
MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG | poll_flag,
- 1081, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
+ port, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
if (d == NULL)
return 16;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
fd = socket (PF_INET, SOCK_STREAM, 0);
if (fd == MHD_INVALID_SOCKET)
@@ -487,7 +591,7 @@ testStopRace (int poll_flag)
memset(&sin, 0, sizeof(sin));
sin.sin_family = AF_INET;
- sin.sin_port = htons(1081);
+ sin.sin_port = htons(port);
sin.sin_addr.s_addr = htonl(0x7f000001);
if (connect (fd, (struct sockaddr *)(&sin), sizeof(sin)) < 0)
@@ -566,16 +670,35 @@ testEmptyGet (int poll_flag)
struct CBC cbc;
CURLcode errornum;
int excess_found = 0;
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ {
+ port = 1225;
+ if (oneone)
+ port += 20;
+ }
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG |
poll_flag,
- 11081, NULL, NULL, &ahc_empty, NULL, MHD_OPTION_END);
+ port, NULL, NULL, &ahc_empty, NULL, MHD_OPTION_END);
if (d == NULL)
return 4194304;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
c = curl_easy_init ();
- curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:11081/hello_world");
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/hello_world");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
curl_easy_setopt (c, CURLOPT_DEBUGFUNCTION, &curlExcessFound);
diff --git a/src/testcurl/test_get_chunked.c b/src/testcurl/test_get_chunked.c
index 9fb94626..425776af 100644
--- a/src/testcurl/test_get_chunked.c
+++ b/src/testcurl/test_get_chunked.c
@@ -160,16 +160,31 @@ testInternalGet ()
char buf[2048];
struct CBC cbc;
CURLcode errornum;
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ port = 1170;
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG,
- 1080, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
+ port, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
if (d == NULL)
return 1;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
c = curl_easy_init ();
- curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:1080/hello_world");
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/hello_world");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
curl_easy_setopt (c, CURLOPT_FAILONERROR, 1);
@@ -202,16 +217,31 @@ testMultithreadedGet ()
char buf[2048];
struct CBC cbc;
CURLcode errornum;
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ port = 1171;
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_THREAD_PER_CONNECTION |
MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG,
- 1081, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
+ port, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
if (d == NULL)
return 16;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
c = curl_easy_init ();
- curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:1081/hello_world");
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/hello_world");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
curl_easy_setopt (c, CURLOPT_FAILONERROR, 1);
@@ -244,17 +274,32 @@ testMultithreadedPoolGet ()
char buf[2048];
struct CBC cbc;
CURLcode errornum;
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ port = 1172;
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG,
- 1081, NULL, NULL, &ahc_echo, "GET",
+ port, NULL, NULL, &ahc_echo, "GET",
MHD_OPTION_THREAD_POOL_SIZE, CPU_COUNT,
MHD_OPTION_END);
if (d == NULL)
return 16;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
c = curl_easy_init ();
- curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:1081/hello_world");
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/hello_world");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
curl_easy_setopt (c, CURLOPT_FAILONERROR, 1);
@@ -301,17 +346,32 @@ testExternalGet ()
struct CURLMsg *msg;
time_t start;
struct timeval tv;
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ port = 1173;
multi = NULL;
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_ERROR_LOG,
- 1082, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
+ port, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
if (d == NULL)
return 256;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
c = curl_easy_init ();
- curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:1082/hello_world");
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/hello_world");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
curl_easy_setopt (c, CURLOPT_FAILONERROR, 1);
diff --git a/src/testcurl/test_get_response_cleanup.c
b/src/testcurl/test_get_response_cleanup.c
index 76657262..03552ba0 100644
--- a/src/testcurl/test_get_response_cleanup.c
+++ b/src/testcurl/test_get_response_cleanup.c
@@ -153,13 +153,33 @@ testInternalGet ()
{
struct MHD_Daemon *d;
pid_t curl;
+ int port;
+ char url[127];
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ {
+ port = 1180;
+ if (oneone)
+ port += 10;
+ }
ok = 1;
d = MHD_start_daemon (MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG,
- 11080, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
+ port, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
if (d == NULL)
return 1;
- curl = fork_curl ("http://127.0.0.1:11080/");
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
+ sprintf(url, "http://127.0.0.1:%d/", port);
+ curl = fork_curl (url);
sleep (1);
kill_curl (curl);
sleep (1);
@@ -176,20 +196,40 @@ testMultithreadedGet ()
{
struct MHD_Daemon *d;
pid_t curl;
+ int port;
+ char url[127];
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ {
+ port = 1181;
+ if (oneone)
+ port += 10;
+ }
ok = 1;
d = MHD_start_daemon (MHD_USE_THREAD_PER_CONNECTION |
MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG,
- 1081, NULL, NULL, &ahc_echo, "GET",
+ port, NULL, NULL, &ahc_echo, "GET",
MHD_OPTION_CONNECTION_TIMEOUT, (unsigned int) 2,
MHD_OPTION_END);
if (d == NULL)
return 16;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
+ sprintf(url, "http://127.0.0.1:%d/", port);
//fprintf (stderr, "Forking cURL!\n");
- curl = fork_curl ("http://127.0.0.1:1081/");
+ curl = fork_curl (url);
sleep (1);
kill_curl (curl);
sleep (1);
- curl = fork_curl ("http://127.0.0.1:1081/");
+ curl = fork_curl (url);
sleep (1);
if (ok != 0)
{
@@ -213,14 +253,34 @@ testMultithreadedPoolGet ()
{
struct MHD_Daemon *d;
pid_t curl;
+ int port;
+ char url[127];
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ {
+ port = 1182;
+ if (oneone)
+ port += 10;
+ }
ok = 1;
d = MHD_start_daemon (MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG,
- 1081, NULL, NULL, &ahc_echo, "GET",
+ port, NULL, NULL, &ahc_echo, "GET",
MHD_OPTION_THREAD_POOL_SIZE, CPU_COUNT,
MHD_OPTION_END);
if (d == NULL)
return 64;
- curl = fork_curl ("http://127.0.0.1:1081/");
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
+ sprintf(url, "http://127.0.0.1:%d/", port);
+ curl = fork_curl (url);
sleep (1);
kill_curl (curl);
sleep (1);
@@ -243,13 +303,33 @@ testExternalGet ()
time_t start;
struct timeval tv;
pid_t curl;
+ int port;
+ char url[127];
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ {
+ port = 1183;
+ if (oneone)
+ port += 10;
+ }
ok = 1;
d = MHD_start_daemon (MHD_USE_ERROR_LOG,
- 1082, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
+ port, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
if (d == NULL)
return 256;
- curl = fork_curl ("http://127.0.0.1:1082/");
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
+ sprintf(url, "http://127.0.0.1:%d/", port);
+ curl = fork_curl (url);
start = time (NULL);
while ((time (NULL) - start < 2))
diff --git a/src/testcurl/test_get_sendfile.c b/src/testcurl/test_get_sendfile.c
index a177d213..652423d4 100644
--- a/src/testcurl/test_get_sendfile.c
+++ b/src/testcurl/test_get_sendfile.c
@@ -121,16 +121,35 @@ testInternalGet ()
char buf[2048];
struct CBC cbc;
CURLcode errornum;
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ {
+ port = 1200;
+ if (oneone)
+ port += 10;
+ }
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG,
- 11080, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
+ port, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
if (d == NULL)
return 1;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
c = curl_easy_init ();
- curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:11080/");
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
curl_easy_setopt (c, CURLOPT_FAILONERROR, 1);
@@ -171,16 +190,35 @@ testMultithreadedGet ()
char buf[2048];
struct CBC cbc;
CURLcode errornum;
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ {
+ port = 1201;
+ if (oneone)
+ port += 10;
+ }
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_THREAD_PER_CONNECTION |
MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG,
- 1081, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
+ port, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
if (d == NULL)
return 16;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
c = curl_easy_init ();
- curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:1081/");
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
curl_easy_setopt (c, CURLOPT_FAILONERROR, 1);
@@ -221,17 +259,36 @@ testMultithreadedPoolGet ()
char buf[2048];
struct CBC cbc;
CURLcode errornum;
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ {
+ port = 1202;
+ if (oneone)
+ port += 10;
+ }
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG,
- 1081, NULL, NULL, &ahc_echo, "GET",
+ port, NULL, NULL, &ahc_echo, "GET",
MHD_OPTION_THREAD_POOL_SIZE, CPU_COUNT,
MHD_OPTION_END);
if (d == NULL)
return 16;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
c = curl_easy_init ();
- curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:1081/");
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
curl_easy_setopt (c, CURLOPT_FAILONERROR, 1);
@@ -286,17 +343,36 @@ testExternalGet ()
struct CURLMsg *msg;
time_t start;
struct timeval tv;
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ {
+ port = 1203;
+ if (oneone)
+ port += 10;
+ }
multi = NULL;
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_ERROR_LOG,
- 1082, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
+ port, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
if (d == NULL)
return 256;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
c = curl_easy_init ();
- curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:1082/");
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
curl_easy_setopt (c, CURLOPT_FAILONERROR, 1);
@@ -406,6 +482,7 @@ testUnknownPortGet ()
char buf[2048];
struct CBC cbc;
CURLcode errornum;
+ int port;
struct sockaddr_in addr;
socklen_t addr_len = sizeof(addr);
@@ -418,24 +495,36 @@ testUnknownPortGet ()
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG,
- 1, NULL, NULL, &ahc_echo, "GET",
+ 0, NULL, NULL, &ahc_echo, "GET",
MHD_OPTION_SOCK_ADDR, &addr,
MHD_OPTION_END);
if (d == NULL)
return 32768;
- di = MHD_get_daemon_info (d, MHD_DAEMON_INFO_LISTEN_FD);
- if (di == NULL)
- return 65536;
+ if (MHD_NO == MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ {
+ di = MHD_get_daemon_info (d, MHD_DAEMON_INFO_LISTEN_FD);
+ if (di == NULL)
+ return 65536;
- if (0 != getsockname(di->listen_fd, (struct sockaddr *) &addr, &addr_len))
- return 131072;
+ if (0 != getsockname(di->listen_fd, (struct sockaddr *) &addr,
&addr_len))
+ return 131072;
- if (addr.sin_family != AF_INET)
- return 26214;
+ if (addr.sin_family != AF_INET)
+ return 26214;
+ port = (int)ntohs(addr.sin_port);
+ }
+ else
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
- snprintf(buf, sizeof(buf), "http://127.0.0.1:%hu/",
- ntohs(addr.sin_port));
+ snprintf(buf, sizeof(buf), "http://127.0.0.1:%d/",
+ port);
c = curl_easy_init ();
curl_easy_setopt (c, CURLOPT_URL, buf);
diff --git a/src/testcurl/test_iplimit.c b/src/testcurl/test_iplimit.c
index a41294ba..0667f0d5 100644
--- a/src/testcurl/test_iplimit.c
+++ b/src/testcurl/test_iplimit.c
@@ -112,18 +112,36 @@ testMultithreadedGet ()
int k;
unsigned int success;
unsigned int failure;
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ {
+ port = 1260;
+ if (oneone)
+ port += 5;
+ }
/* Test only valid for HTTP/1.1 (uses persistent connections) */
if (!oneone)
return 0;
d = MHD_start_daemon (MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG,
- 1081, NULL, NULL,
+ port, NULL, NULL,
&ahc_echo, "GET",
MHD_OPTION_PER_IP_CONNECTION_LIMIT, 2,
MHD_OPTION_END);
if (d == NULL)
return 16;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
for (k = 0; k < 3; ++k)
{
@@ -143,7 +161,8 @@ testMultithreadedGet ()
cbc[i].size = 2048;
cbc[i].pos = 0;
- curl_easy_setopt (c, CURLOPT_URL,
"http://127.0.0.1:1081/hello_world");
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/hello_world");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc[i]);
curl_easy_setopt (c, CURLOPT_FAILONERROR, 1);
@@ -203,18 +222,35 @@ testMultithreadedPoolGet ()
struct MHD_Daemon *d;
char buf[2048];
int k;
+ int port;
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ {
+ port = 1261;
+ if (oneone)
+ port += 5;
+ }
/* Test only valid for HTTP/1.1 (uses persistent connections) */
if (!oneone)
return 0;
d = MHD_start_daemon (MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG,
- 1081, NULL, NULL, &ahc_echo, "GET",
+ port, NULL, NULL, &ahc_echo, "GET",
MHD_OPTION_PER_IP_CONNECTION_LIMIT, 2,
MHD_OPTION_THREAD_POOL_SIZE, CPU_COUNT,
MHD_OPTION_END);
if (d == NULL)
return 16;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
for (k = 0; k < 3; ++k)
{
@@ -232,7 +268,8 @@ testMultithreadedPoolGet ()
cbc[i].size = 2048;
cbc[i].pos = 0;
- curl_easy_setopt (c, CURLOPT_URL,
"http://127.0.0.1:1081/hello_world");
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/hello_world");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc[i]);
curl_easy_setopt (c, CURLOPT_FAILONERROR, 1);
diff --git a/src/testcurl/test_large_put.c b/src/testcurl/test_large_put.c
index d701e64d..c6b3ae27 100644
--- a/src/testcurl/test_large_put.c
+++ b/src/testcurl/test_large_put.c
@@ -182,19 +182,40 @@ testPutInternalThread (unsigned int add_flag)
int done_flag = 0;
CURLcode errornum;
char buf[2048];
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ {
+ port = 1270;
+ if (oneone)
+ port += 10;
+ if (incr_read)
+ port += 20;
+ }
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG |
add_flag,
- 1080,
+ port,
NULL, NULL, &ahc_echo, &done_flag,
MHD_OPTION_CONNECTION_MEMORY_LIMIT, (size_t)(incr_read
? 1024 : (PUT_SIZE * 4)),
MHD_OPTION_END);
if (d == NULL)
return 1;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
c = curl_easy_init ();
- curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:1080/hello_world");
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/hello_world");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
curl_easy_setopt (c, CURLOPT_READFUNCTION, &putBuffer);
@@ -240,20 +261,41 @@ testPutThreadPerConn (unsigned int add_flag)
int done_flag = 0;
CURLcode errornum;
char buf[2048];
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ {
+ port = 1271;
+ if (oneone)
+ port += 10;
+ if (incr_read)
+ port += 20;
+ }
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_THREAD_PER_CONNECTION |
MHD_USE_INTERNAL_POLLING_THREAD |
MHD_USE_ERROR_LOG | add_flag,
- 1081,
+ port,
NULL, NULL, &ahc_echo, &done_flag,
MHD_OPTION_CONNECTION_MEMORY_LIMIT, (size_t)(incr_read
? 1024 : (PUT_SIZE * 4)),
MHD_OPTION_END);
if (d == NULL)
return 16;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
c = curl_easy_init ();
- curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:1081/hello_world");
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/hello_world");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
curl_easy_setopt (c, CURLOPT_READFUNCTION, &putBuffer);
@@ -302,20 +344,41 @@ testPutThreadPool (unsigned int add_flag)
int done_flag = 0;
CURLcode errornum;
char buf[2048];
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ {
+ port = 1272;
+ if (oneone)
+ port += 10;
+ if (incr_read)
+ port += 20;
+ }
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG |
add_flag,
- 1081,
+ port,
NULL, NULL, &ahc_echo, &done_flag,
MHD_OPTION_THREAD_POOL_SIZE, CPU_COUNT,
MHD_OPTION_CONNECTION_MEMORY_LIMIT, (size_t)(incr_read
? 1024 : (PUT_SIZE * 4)),
MHD_OPTION_END);
if (d == NULL)
return 16;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
c = curl_easy_init ();
- curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:1081/hello_world");
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/hello_world");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
curl_easy_setopt (c, CURLOPT_READFUNCTION, &putBuffer);
@@ -378,20 +441,41 @@ testPutExternal (void)
size_t pos = 0;
int done_flag = 0;
char buf[2048];
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ {
+ port = 1273;
+ if (oneone)
+ port += 10;
+ if (incr_read)
+ port += 20;
+ }
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
multi = NULL;
d = MHD_start_daemon (MHD_USE_ERROR_LOG,
- 1082,
+ port,
NULL, NULL, &ahc_echo, &done_flag,
MHD_OPTION_CONNECTION_MEMORY_LIMIT, (size_t)(incr_read
? 1024 : (PUT_SIZE * 4)),
MHD_OPTION_END);
if (d == NULL)
return 256;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
c = curl_easy_init ();
- curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:1082/hello_world");
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/hello_world");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
curl_easy_setopt (c, CURLOPT_READFUNCTION, &putBuffer);
diff --git a/src/testcurl/test_long_header.c b/src/testcurl/test_long_header.c
index a82464b8..31a8581d 100644
--- a/src/testcurl/test_long_header.c
+++ b/src/testcurl/test_long_header.c
@@ -97,12 +97,21 @@ testLongUrlGet ()
struct CBC cbc;
char *url;
long code;
+ int port;
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ {
+ port = 1330;
+ if (oneone)
+ port += 5;
+ }
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_INTERNAL_POLLING_THREAD /* | MHD_USE_ERROR_LOG
*/ ,
- 1080,
+ port,
&apc_all,
NULL,
&ahc_echo,
@@ -111,6 +120,14 @@ testLongUrlGet ()
(size_t) (VERY_LONG / 2), MHD_OPTION_END);
if (d == NULL)
return 1;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
c = curl_easy_init ();
url = malloc (VERY_LONG);
if (url == NULL)
@@ -120,8 +137,9 @@ testLongUrlGet ()
}
memset (url, 'a', VERY_LONG);
url[VERY_LONG - 1] = '\0';
- memcpy (url, "http://127.0.0.1:1080/", strlen ("http://127.0.0.1:1080/"));
+ memcpy (url, "http://127.0.0.1/", strlen ("http://127.0.0.1/"));
curl_easy_setopt (c, CURLOPT_URL, url);
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
curl_easy_setopt (c, CURLOPT_FAILONERROR, 1);
@@ -168,12 +186,22 @@ testLongHeaderGet ()
char *url;
long code;
struct curl_slist *header = NULL;
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ {
+ port = 1331;
+ if (oneone)
+ port += 5;
+ }
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_INTERNAL_POLLING_THREAD /* | MHD_USE_ERROR_LOG
*/ ,
- 1080,
+ port,
&apc_all,
NULL,
&ahc_echo,
@@ -182,6 +210,14 @@ testLongHeaderGet ()
(size_t) (VERY_LONG / 2), MHD_OPTION_END);
if (d == NULL)
return 16;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
c = curl_easy_init ();
url = malloc (VERY_LONG);
if (url == NULL)
@@ -196,7 +232,8 @@ testLongHeaderGet ()
header = curl_slist_append (header, url);
curl_easy_setopt (c, CURLOPT_HTTPHEADER, header);
- curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:1080/hello_world");
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/hello_world");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
curl_easy_setopt (c, CURLOPT_FAILONERROR, 1);
diff --git a/src/testcurl/test_options.c b/src/testcurl/test_options.c
index 7b0949a1..317968e5 100644
--- a/src/testcurl/test_options.c
+++ b/src/testcurl/test_options.c
@@ -80,17 +80,17 @@ test_ip_addr_option ()
memset (&daemon_ip_addr, 0, sizeof (struct sockaddr_in));
daemon_ip_addr.sin_family = AF_INET;
- daemon_ip_addr.sin_port = htons (4233);
+ daemon_ip_addr.sin_port = 0;
daemon_ip_addr.sin_addr.s_addr = htonl (INADDR_LOOPBACK);
#if HAVE_INET6
memset (&daemon_ip_addr6, 0, sizeof (struct sockaddr_in6));
daemon_ip_addr6.sin6_family = AF_INET6;
- daemon_ip_addr6.sin6_port = htons (4233);
+ daemon_ip_addr6.sin6_port = 0;
daemon_ip_addr6.sin6_addr = in6addr_loopback;
#endif
- d = MHD_start_daemon (MHD_USE_ERROR_LOG, 4233,
+ d = MHD_start_daemon (MHD_USE_ERROR_LOG, 0,
NULL, NULL, &ahc_echo, NULL, MHD_OPTION_SOCK_ADDR,
&daemon_ip_addr, MHD_OPTION_END);
@@ -100,7 +100,7 @@ test_ip_addr_option ()
MHD_stop_daemon (d);
#if HAVE_INET6
- d = MHD_start_daemon (MHD_USE_ERROR_LOG | MHD_USE_IPv6, 4233,
+ d = MHD_start_daemon (MHD_USE_ERROR_LOG | MHD_USE_IPv6, 0,
NULL, NULL, &ahc_echo, NULL, MHD_OPTION_SOCK_ADDR,
&daemon_ip_addr6, MHD_OPTION_END);
diff --git a/src/testcurl/test_parse_cookies.c
b/src/testcurl/test_parse_cookies.c
index f2a3647d..d04815d5 100644
--- a/src/testcurl/test_parse_cookies.c
+++ b/src/testcurl/test_parse_cookies.c
@@ -126,17 +126,36 @@ testExternalGet ()
struct CURLMsg *msg;
time_t start;
struct timeval tv;
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ {
+ port = 1340;
+ if (oneone)
+ port += 5;
+ }
multi = NULL;
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_ERROR_LOG,
- 21080, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
+ port, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
if (d == NULL)
return 256;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
c = curl_easy_init ();
- curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:21080/hello_world");
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/hello_world");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
curl_easy_setopt (c, CURLOPT_FAILONERROR, 1);
diff --git a/src/testcurl/test_post.c b/src/testcurl/test_post.c
index cb9ded6e..41d219fa 100644
--- a/src/testcurl/test_post.c
+++ b/src/testcurl/test_post.c
@@ -166,18 +166,37 @@ testInternalPost ()
char buf[2048];
struct CBC cbc;
CURLcode errornum;
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ {
+ port = 1370;
+ if (oneone)
+ port += 10;
+ }
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG,
- 1080, NULL, NULL, &ahc_echo, NULL,
+ port, NULL, NULL, &ahc_echo, NULL,
MHD_OPTION_NOTIFY_COMPLETED, &completed_cb, NULL,
MHD_OPTION_END);
if (d == NULL)
return 1;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
c = curl_easy_init ();
- curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:1080/hello_world");
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/hello_world");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
curl_easy_setopt (c, CURLOPT_POSTFIELDS, POST_DATA);
@@ -220,18 +239,37 @@ testMultithreadedPost ()
char buf[2048];
struct CBC cbc;
CURLcode errornum;
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ {
+ port = 1371;
+ if (oneone)
+ port += 10;
+ }
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_THREAD_PER_CONNECTION |
MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG,
- 1081, NULL, NULL, &ahc_echo, NULL,
+ port, NULL, NULL, &ahc_echo, NULL,
MHD_OPTION_NOTIFY_COMPLETED, &completed_cb, NULL,
MHD_OPTION_END);
if (d == NULL)
return 16;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
c = curl_easy_init ();
- curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:1081/hello_world");
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/hello_world");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
curl_easy_setopt (c, CURLOPT_POSTFIELDS, POST_DATA);
@@ -274,19 +312,38 @@ testMultithreadedPoolPost ()
char buf[2048];
struct CBC cbc;
CURLcode errornum;
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ {
+ port = 1372;
+ if (oneone)
+ port += 10;
+ }
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG,
- 1081, NULL, NULL, &ahc_echo, NULL,
+ port, NULL, NULL, &ahc_echo, NULL,
MHD_OPTION_THREAD_POOL_SIZE, CPU_COUNT,
MHD_OPTION_NOTIFY_COMPLETED, &completed_cb, NULL,
MHD_OPTION_END);
if (d == NULL)
return 16;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
c = curl_easy_init ();
- curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:1081/hello_world");
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/hello_world");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
curl_easy_setopt (c, CURLOPT_POSTFIELDS, POST_DATA);
@@ -343,19 +400,38 @@ testExternalPost ()
struct CURLMsg *msg;
time_t start;
struct timeval tv;
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ {
+ port = 1373;
+ if (oneone)
+ port += 10;
+ }
multi = NULL;
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_ERROR_LOG,
- 1082, NULL, NULL, &ahc_echo, NULL,
+ port, NULL, NULL, &ahc_echo, NULL,
MHD_OPTION_NOTIFY_COMPLETED, &completed_cb, NULL,
MHD_OPTION_END);
if (d == NULL)
return 256;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
c = curl_easy_init ();
- curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:1082/hello_world");
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/hello_world");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
curl_easy_setopt (c, CURLOPT_POSTFIELDS, POST_DATA);
@@ -550,6 +626,16 @@ testMultithreadedPostCancelPart(int flags)
CURLcode cc;
int result = 0;
struct CRBC crbc;
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ {
+ port = 1374;
+ if (oneone)
+ port += 10;
+ }
/* Don't test features that aren't available with HTTP/1.0 in
* HTTP/1.0 mode. */
@@ -560,17 +646,26 @@ testMultithreadedPostCancelPart(int flags)
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_THREAD_PER_CONNECTION |
MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG,
- 1081, NULL, NULL, &ahc_cancel, NULL,
+ port, NULL, NULL, &ahc_cancel, NULL,
MHD_OPTION_END);
if (d == NULL)
return 32768;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
crbc.buffer = "Test content";
crbc.size = strlen(crbc.buffer);
crbc.pos = 0;
c = curl_easy_init ();
- curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:1081/hello_world");
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/hello_world");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
curl_easy_setopt (c, CURLOPT_READFUNCTION, (flags & FLAG_SLOW_READ) ?
&slowReadBuffer : &readBuffer);
diff --git a/src/testcurl/test_post_loop.c b/src/testcurl/test_post_loop.c
index 5495fd5a..9a4c6db1 100644
--- a/src/testcurl/test_post_loop.c
+++ b/src/testcurl/test_post_loop.c
@@ -116,13 +116,31 @@ testInternalPost ()
CURLcode errornum;
int i;
char url[1024];
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ {
+ port = 1350;
+ if (oneone)
+ port += 10;
+ }
cbc.buf = buf;
cbc.size = 2048;
d = MHD_start_daemon (MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG,
- 1080, NULL, NULL, &ahc_echo, NULL, MHD_OPTION_END);
+ port, NULL, NULL, &ahc_echo, NULL, MHD_OPTION_END);
if (d == NULL)
return 1;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
for (i = 0; i < LOOPCOUNT; i++)
{
if (99 == i % 100)
@@ -130,7 +148,7 @@ testInternalPost ()
c = curl_easy_init ();
cbc.pos = 0;
buf[0] = '\0';
- sprintf (url, "http://127.0.0.1:1080/hw%d", i);
+ sprintf (url, "http://127.0.0.1:%d/hw%d", port, i);
curl_easy_setopt (c, CURLOPT_URL, url);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
@@ -180,13 +198,31 @@ testMultithreadedPost ()
CURLcode errornum;
int i;
char url[1024];
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ {
+ port = 1351;
+ if (oneone)
+ port += 10;
+ }
cbc.buf = buf;
cbc.size = 2048;
d = MHD_start_daemon (MHD_USE_THREAD_PER_CONNECTION |
MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG,
- 1081, NULL, NULL, &ahc_echo, NULL, MHD_OPTION_END);
+ port, NULL, NULL, &ahc_echo, NULL, MHD_OPTION_END);
if (d == NULL)
return 16;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
for (i = 0; i < LOOPCOUNT; i++)
{
if (99 == i % 100)
@@ -194,7 +230,7 @@ testMultithreadedPost ()
c = curl_easy_init ();
cbc.pos = 0;
buf[0] = '\0';
- sprintf (url, "http://127.0.0.1:1081/hw%d", i);
+ sprintf (url, "http://127.0.0.1:%d/hw%d", port, i);
curl_easy_setopt (c, CURLOPT_URL, url);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
@@ -244,14 +280,32 @@ testMultithreadedPoolPost ()
CURLcode errornum;
int i;
char url[1024];
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ {
+ port = 1352;
+ if (oneone)
+ port += 10;
+ }
cbc.buf = buf;
cbc.size = 2048;
d = MHD_start_daemon (MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG,
- 1081, NULL, NULL, &ahc_echo, NULL,
+ port, NULL, NULL, &ahc_echo, NULL,
MHD_OPTION_THREAD_POOL_SIZE, CPU_COUNT,
MHD_OPTION_END);
if (d == NULL)
return 16;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
for (i = 0; i < LOOPCOUNT; i++)
{
if (99 == i % 100)
@@ -259,7 +313,7 @@ testMultithreadedPoolPost ()
c = curl_easy_init ();
cbc.pos = 0;
buf[0] = '\0';
- sprintf (url, "http://127.0.0.1:1081/hw%d", i);
+ sprintf (url, "http://127.0.0.1:%d/hw%d", port, i);
curl_easy_setopt (c, CURLOPT_URL, url);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
@@ -325,15 +379,33 @@ testExternalPost ()
unsigned long long timeout;
long ctimeout;
char url[1024];
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ {
+ port = 1353;
+ if (oneone)
+ port += 10;
+ }
multi = NULL;
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_ERROR_LOG,
- 1082, NULL, NULL, &ahc_echo, NULL, MHD_OPTION_END);
+ port, NULL, NULL, &ahc_echo, NULL, MHD_OPTION_END);
if (d == NULL)
return 256;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
multi = curl_multi_init ();
if (multi == NULL)
{
@@ -347,7 +419,7 @@ testExternalPost ()
c = curl_easy_init ();
cbc.pos = 0;
buf[0] = '\0';
- sprintf (url, "http://127.0.0.1:1082/hw%d", i);
+ sprintf (url, "http://127.0.0.1:%d/hw%d", port, i);
curl_easy_setopt (c, CURLOPT_URL, url);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
diff --git a/src/testcurl/test_postform.c b/src/testcurl/test_postform.c
index 76b84824..d7fd14a0 100644
--- a/src/testcurl/test_postform.c
+++ b/src/testcurl/test_postform.c
@@ -179,18 +179,37 @@ testInternalPost ()
struct CBC cbc;
CURLcode errornum;
struct curl_httppost *pd;
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ {
+ port = 1390;
+ if (oneone)
+ port += 10;
+ }
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG,
- 1080, NULL, NULL, &ahc_echo, NULL,
+ port, NULL, NULL, &ahc_echo, NULL,
MHD_OPTION_NOTIFY_COMPLETED, &completed_cb, NULL,
MHD_OPTION_END);
if (d == NULL)
return 1;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
c = curl_easy_init ();
- curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:1080/hello_world");
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/hello_world");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
pd = make_form ();
@@ -235,18 +254,37 @@ testMultithreadedPost ()
struct CBC cbc;
CURLcode errornum;
struct curl_httppost *pd;
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ {
+ port = 1390;
+ if (oneone)
+ port += 10;
+ }
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_THREAD_PER_CONNECTION |
MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG,
- 1081, NULL, NULL, &ahc_echo, NULL,
+ port, NULL, NULL, &ahc_echo, NULL,
MHD_OPTION_NOTIFY_COMPLETED, &completed_cb, NULL,
MHD_OPTION_END);
if (d == NULL)
return 16;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
c = curl_easy_init ();
- curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:1081/hello_world");
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/hello_world");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
pd = make_form ();
@@ -291,19 +329,38 @@ testMultithreadedPoolPost ()
struct CBC cbc;
CURLcode errornum;
struct curl_httppost *pd;
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ {
+ port = 1391;
+ if (oneone)
+ port += 10;
+ }
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG,
- 1081, NULL, NULL, &ahc_echo, NULL,
+ port, NULL, NULL, &ahc_echo, NULL,
MHD_OPTION_THREAD_POOL_SIZE, CPU_COUNT,
MHD_OPTION_NOTIFY_COMPLETED, &completed_cb, NULL,
MHD_OPTION_END);
if (d == NULL)
return 16;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
c = curl_easy_init ();
- curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:1081/hello_world");
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/hello_world");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
pd = make_form ();
@@ -362,19 +419,38 @@ testExternalPost ()
time_t start;
struct timeval tv;
struct curl_httppost *pd;
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ {
+ port = 1392;
+ if (oneone)
+ port += 10;
+ }
multi = NULL;
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_ERROR_LOG,
- 1082, NULL, NULL, &ahc_echo, NULL,
+ port, NULL, NULL, &ahc_echo, NULL,
MHD_OPTION_NOTIFY_COMPLETED, &completed_cb, NULL,
MHD_OPTION_END);
if (d == NULL)
return 256;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
c = curl_easy_init ();
- curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:1082/hello_world");
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/hello_world");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
pd = make_form ();
diff --git a/src/testcurl/test_process_arguments.c
b/src/testcurl/test_process_arguments.c
index 20556082..def5cd98 100644
--- a/src/testcurl/test_process_arguments.c
+++ b/src/testcurl/test_process_arguments.c
@@ -130,18 +130,37 @@ testExternalGet ()
struct CURLMsg *msg;
time_t start;
struct timeval tv;
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ {
+ port = 1410;
+ if (oneone)
+ port += 5;
+ }
multi = NULL;
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_ERROR_LOG,
- 21080, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
+ port, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
if (d == NULL)
return 256;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
c = curl_easy_init ();
curl_easy_setopt (c, CURLOPT_URL,
-
"http://127.0.0.1:21080/hello+world?k=v+x&hash=%23foo&space=%A0bar");
+
"http://127.0.0.1/hello+world?k=v+x&hash=%23foo&space=%A0bar");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
curl_easy_setopt (c, CURLOPT_FAILONERROR, 1);
diff --git a/src/testcurl/test_process_headers.c
b/src/testcurl/test_process_headers.c
index 9c9c94d7..57fc3d31 100644
--- a/src/testcurl/test_process_headers.c
+++ b/src/testcurl/test_process_headers.c
@@ -69,7 +69,7 @@ static int
kv_cb (void *cls, enum MHD_ValueKind kind, const char *key, const char *value)
{
if ((0 == strcmp (key, MHD_HTTP_HEADER_HOST)) &&
- (0 == strcmp (value, "127.0.0.1:21080")) && (kind == MHD_HEADER_KIND))
+ (0 == strncmp (value, "127.0.0.1", strlen("127.0.0.1"))) && (kind ==
MHD_HEADER_KIND))
{
*((int *) cls) = 1;
return MHD_NO;
@@ -113,7 +113,7 @@ ahc_echo (void *cls,
abort ();
hdr = MHD_lookup_connection_value (connection,
MHD_HEADER_KIND, MHD_HTTP_HEADER_HOST);
- if ((hdr == NULL) || (0 != strcmp (hdr, "127.0.0.1:21080")))
+ if ((hdr == NULL) || (0 != strncmp (hdr, "127.0.0.1", strlen("127.0.0.1"))))
abort ();
MHD_set_connection_value (connection,
MHD_HEADER_KIND, "FakeHeader", "NowPresent");
@@ -153,16 +153,35 @@ testInternalGet ()
char buf[2048];
struct CBC cbc;
CURLcode errornum;
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ {
+ port = 1420;
+ if (oneone)
+ port += 10;
+ }
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG,
- 21080, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
+ port, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
if (d == NULL)
return 1;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
c = curl_easy_init ();
- curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:21080/hello_world");
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/hello_world");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
curl_easy_setopt (c, CURLOPT_FAILONERROR, 1);
@@ -202,16 +221,35 @@ testMultithreadedGet ()
char buf[2048];
struct CBC cbc;
CURLcode errornum;
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ {
+ port = 1421;
+ if (oneone)
+ port += 10;
+ }
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_THREAD_PER_CONNECTION |
MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG,
- 21080, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
+ port, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
if (d == NULL)
return 16;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
c = curl_easy_init ();
- curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:21080/hello_world");
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/hello_world");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
curl_easy_setopt (c, CURLOPT_FAILONERROR, 1);
@@ -251,17 +289,36 @@ testMultithreadedPoolGet ()
char buf[2048];
struct CBC cbc;
CURLcode errornum;
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ {
+ port = 1422;
+ if (oneone)
+ port += 10;
+ }
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG,
- 21080, NULL, NULL, &ahc_echo, "GET",
+ port, NULL, NULL, &ahc_echo, "GET",
MHD_OPTION_THREAD_POOL_SIZE, CPU_COUNT,
MHD_OPTION_END);
if (d == NULL)
return 16;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
c = curl_easy_init ();
- curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:21080/hello_world");
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/hello_world");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
curl_easy_setopt (c, CURLOPT_FAILONERROR, 1);
@@ -315,17 +372,36 @@ testExternalGet ()
struct CURLMsg *msg;
time_t start;
struct timeval tv;
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ {
+ port = 1423;
+ if (oneone)
+ port += 10;
+ }
multi = NULL;
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_ERROR_LOG,
- 21080, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
+ port, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
if (d == NULL)
return 256;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
c = curl_easy_init ();
- curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:21080/hello_world");
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/hello_world");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
curl_easy_setopt (c, CURLOPT_FAILONERROR, 1);
diff --git a/src/testcurl/test_put.c b/src/testcurl/test_put.c
index 54725374..f448c408 100644
--- a/src/testcurl/test_put.c
+++ b/src/testcurl/test_put.c
@@ -127,17 +127,36 @@ testInternalPut ()
unsigned int pos = 0;
int done_flag = 0;
CURLcode errornum;
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ {
+ port = 1450;
+ if (oneone)
+ port += 10;
+ }
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG,
- 1080,
+ port,
NULL, NULL, &ahc_echo, &done_flag, MHD_OPTION_END);
if (d == NULL)
return 1;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
c = curl_easy_init ();
- curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:1080/hello_world");
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/hello_world");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
curl_easy_setopt (c, CURLOPT_READFUNCTION, &putBuffer);
@@ -183,17 +202,36 @@ testMultithreadedPut ()
unsigned int pos = 0;
int done_flag = 0;
CURLcode errornum;
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ {
+ port = 1451;
+ if (oneone)
+ port += 10;
+ }
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_THREAD_PER_CONNECTION |
MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG,
- 1081,
+ port,
NULL, NULL, &ahc_echo, &done_flag, MHD_OPTION_END);
if (d == NULL)
return 16;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
c = curl_easy_init ();
- curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:1081/hello_world");
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/hello_world");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
curl_easy_setopt (c, CURLOPT_READFUNCTION, &putBuffer);
@@ -240,18 +278,37 @@ testMultithreadedPoolPut ()
unsigned int pos = 0;
int done_flag = 0;
CURLcode errornum;
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ {
+ port = 1452;
+ if (oneone)
+ port += 10;
+ }
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG,
- 1081,
+ port,
NULL, NULL, &ahc_echo, &done_flag,
MHD_OPTION_THREAD_POOL_SIZE, CPU_COUNT,
MHD_OPTION_END);
if (d == NULL)
return 16;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
c = curl_easy_init ();
- curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:1081/hello_world");
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/hello_world");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
curl_easy_setopt (c, CURLOPT_READFUNCTION, &putBuffer);
@@ -313,19 +370,38 @@ testExternalPut ()
struct timeval tv;
unsigned int pos = 0;
int done_flag = 0;
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ {
+ port = 1453;
+ if (oneone)
+ port += 10;
+ }
multi = NULL;
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_ERROR_LOG,
- 1082,
+ port,
NULL, NULL, &ahc_echo, &done_flag, MHD_OPTION_END);
if (d == NULL)
return 256;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
c = curl_easy_init ();
- curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:1082/hello_world");
- curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/hello_world");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
+curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
curl_easy_setopt (c, CURLOPT_READFUNCTION, &putBuffer);
curl_easy_setopt (c, CURLOPT_READDATA, &pos);
diff --git a/src/testcurl/test_put_chunked.c b/src/testcurl/test_put_chunked.c
index 48fef064..b7a7537c 100644
--- a/src/testcurl/test_put_chunked.c
+++ b/src/testcurl/test_put_chunked.c
@@ -137,17 +137,32 @@ testInternalPut ()
unsigned int pos = 0;
int done_flag = 0;
CURLcode errornum;
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ port = 1440;
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG,
- 11080,
+ port,
NULL, NULL, &ahc_echo, &done_flag, MHD_OPTION_END);
if (d == NULL)
return 1;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
c = curl_easy_init ();
- curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:11080/hello_world");
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/hello_world");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
curl_easy_setopt (c, CURLOPT_READFUNCTION, &putBuffer);
@@ -193,17 +208,32 @@ testMultithreadedPut ()
unsigned int pos = 0;
int done_flag = 0;
CURLcode errornum;
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ port = 1441;
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_THREAD_PER_CONNECTION |
MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG,
- 11081,
+ port,
NULL, NULL, &ahc_echo, &done_flag, MHD_OPTION_END);
if (d == NULL)
return 16;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
c = curl_easy_init ();
- curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:11081/hello_world");
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/hello_world");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
curl_easy_setopt (c, CURLOPT_READFUNCTION, &putBuffer);
@@ -250,18 +280,33 @@ testMultithreadedPoolPut ()
unsigned int pos = 0;
int done_flag = 0;
CURLcode errornum;
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ port = 1442;
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG,
- 11081,
+ port,
NULL, NULL, &ahc_echo, &done_flag,
MHD_OPTION_THREAD_POOL_SIZE, CPU_COUNT,
MHD_OPTION_END);
if (d == NULL)
return 16;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
c = curl_easy_init ();
- curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:11081/hello_world");
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/hello_world");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
curl_easy_setopt (c, CURLOPT_READFUNCTION, &putBuffer);
@@ -323,18 +368,33 @@ testExternalPut ()
struct timeval tv;
unsigned int pos = 0;
int done_flag = 0;
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ port = 1443;
multi = NULL;
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_ERROR_LOG,
- 11082,
+ port,
NULL, NULL, &ahc_echo, &done_flag, MHD_OPTION_END);
if (d == NULL)
return 256;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
c = curl_easy_init ();
- curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:11082/hello_world");
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/hello_world");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
curl_easy_setopt (c, CURLOPT_READFUNCTION, &putBuffer);
diff --git a/src/testcurl/test_quiesce.c b/src/testcurl/test_quiesce.c
index 682d866e..59eea2d0 100644
--- a/src/testcurl/test_quiesce.c
+++ b/src/testcurl/test_quiesce.c
@@ -55,6 +55,7 @@ struct CBC
size_t size;
};
+static int port;
static size_t
copyBuffer (void *ptr, size_t size, size_t nmemb, void *ctx)
@@ -126,7 +127,7 @@ ServeOneRequest(void *param)
fd = (MHD_socket) (intptr_t) param;
d = MHD_start_daemon (MHD_USE_ERROR_LOG,
- 1082, NULL, NULL, &ahc_echo, "GET",
+ 0, NULL, NULL, &ahc_echo, "GET",
MHD_OPTION_LISTEN_SOCKET, fd,
MHD_OPTION_NOTIFY_COMPLETED, &request_completed, &done,
MHD_OPTION_END);
@@ -172,7 +173,8 @@ setupCURL (void *cbc)
CURL *c;
c = curl_easy_init ();
- curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:11080/hello_world");
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/hello_world");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, cbc);
curl_easy_setopt (c, CURLOPT_FAILONERROR, 1);
@@ -200,20 +202,33 @@ testGet (int type, int pool_count, int poll_flag)
pthread_t thrd;
const char *thrdRet;
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ port = 1480;
+
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
if (pool_count > 0) {
d = MHD_start_daemon (type | MHD_USE_ERROR_LOG | MHD_USE_ITC | poll_flag,
- 11080, NULL, NULL, &ahc_echo, "GET",
+ port, NULL, NULL, &ahc_echo, "GET",
MHD_OPTION_THREAD_POOL_SIZE, pool_count,
MHD_OPTION_END);
} else {
d = MHD_start_daemon (type | MHD_USE_ERROR_LOG | MHD_USE_ITC | poll_flag,
- 11080, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
+ port, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
}
if (d == NULL)
return 1;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
c = setupCURL(&cbc);
@@ -342,17 +357,30 @@ testExternalGet ()
int i;
MHD_socket fd;
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ port = 1481;
+
multi = NULL;
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_ERROR_LOG,
- 11080,
+ port,
NULL, NULL,
&ahc_echo, "GET",
MHD_OPTION_END);
if (d == NULL)
return 256;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
c = setupCURL(&cbc);
multi = curl_multi_init ();
diff --git a/src/testcurl/test_quiesce_stream.c
b/src/testcurl/test_quiesce_stream.c
index 38263e07..62dc97de 100644
--- a/src/testcurl/test_quiesce_stream.c
+++ b/src/testcurl/test_quiesce_stream.c
@@ -22,6 +22,7 @@
* @brief Testcase for libmicrohttpd quiescing
* @author Markus Doppelbauer
* @author Christian Grothoff
+ * @author Karlson2k (Evgeny Grin)
*/
#include "mhd_options.h"
#include <stdlib.h>
@@ -166,8 +167,16 @@ http_AccessHandlerCallback (void *cls,
int
-main()
+main(void)
{
+ int port;
+ char command_line[1024];
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ port = 1470;
+
/* Panic callback */
MHD_set_panic_func (&http_PanicCallback,
NULL);
@@ -181,7 +190,7 @@ main()
/* Create daemon */
struct MHD_Daemon *daemon = MHD_start_daemon (daemon_flags,
- 8000,
+ port,
NULL,
NULL,
&http_AccessHandlerCallback,
@@ -189,7 +198,17 @@ main()
MHD_OPTION_END);
if (NULL == daemon)
return 1;
- if (0 != system ("curl -s http://127.0.0.1:8000"))
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (daemon, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (daemon); return 32; }
+ port = (int)dinfo->port;
+ }
+ sprintf(command_line, "curl -s http://127.0.0.1:%d", port);
+
+ if (0 != system (command_line))
{
MHD_stop_daemon (daemon);
return 1;
diff --git a/src/testcurl/test_start_stop.c b/src/testcurl/test_start_stop.c
index 7a4e36e4..71d50f54 100644
--- a/src/testcurl/test_start_stop.c
+++ b/src/testcurl/test_start_stop.c
@@ -55,7 +55,7 @@ testInternalGet (int poll_flag)
struct MHD_Daemon *d;
d = MHD_start_daemon (MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG |
poll_flag,
- 11080, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
+ 0, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
if (d == NULL)
return 1;
MHD_stop_daemon (d);
@@ -68,7 +68,7 @@ testMultithreadedGet (int poll_flag)
struct MHD_Daemon *d;
d = MHD_start_daemon (MHD_USE_THREAD_PER_CONNECTION |
MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG | poll_flag,
- 1081, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
+ 0, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
if (d == NULL)
return 2;
MHD_stop_daemon (d);
@@ -81,7 +81,7 @@ testMultithreadedPoolGet (int poll_flag)
struct MHD_Daemon *d;
d = MHD_start_daemon (MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG |
poll_flag,
- 1081, NULL, NULL, &ahc_echo, "GET",
+ 0, NULL, NULL, &ahc_echo, "GET",
MHD_OPTION_THREAD_POOL_SIZE, CPU_COUNT,
MHD_OPTION_END);
if (d == NULL)
return 4;
@@ -95,7 +95,7 @@ testExternalGet ()
struct MHD_Daemon *d;
d = MHD_start_daemon (MHD_USE_ERROR_LOG,
- 1082, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
+ 0, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
if (d == NULL)
return 8;
MHD_stop_daemon (d);
diff --git a/src/testcurl/test_termination.c b/src/testcurl/test_termination.c
index fc67c1e2..31466ff3 100644
--- a/src/testcurl/test_termination.c
+++ b/src/testcurl/test_termination.c
@@ -23,7 +23,6 @@
* @brief Testcase for libmicrohttpd tolerating client not closing immediately
* @author hollosig
*/
-#define PORT 12345
#include "platform.h"
#include <stdio.h>
@@ -90,9 +89,16 @@ int
main ()
{
struct MHD_Daemon *daemon;
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ port = 1490;
+
daemon = MHD_start_daemon (MHD_USE_THREAD_PER_CONNECTION |
MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG,
- PORT,
+ port,
NULL,
NULL, connection_handler, NULL, MHD_OPTION_END);
@@ -101,11 +107,19 @@ main ()
fprintf (stderr, "Daemon cannot be started!");
exit (1);
}
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (daemon, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (daemon); return 32; }
+ port = (int)dinfo->port;
+ }
CURL *curl = curl_easy_init ();
//curl_easy_setopt(curl, CURLOPT_POST, 1L);
char url[255];
- sprintf (url, "http://127.0.0.1:%d", PORT);
+ sprintf (url, "http://127.0.0.1:%d", port);
curl_easy_setopt (curl, CURLOPT_URL, url);
curl_easy_setopt (curl, CURLOPT_WRITEFUNCTION, write_data);
diff --git a/src/testcurl/test_timeout.c b/src/testcurl/test_timeout.c
index 6968f000..8e2cba85 100644
--- a/src/testcurl/test_timeout.c
+++ b/src/testcurl/test_timeout.c
@@ -168,20 +168,39 @@ testWithoutTimeout ()
unsigned int pos = 0;
int done_flag = 0;
CURLcode errornum;
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ {
+ port = 1500;
+ if (oneone)
+ port += 5;
+ }
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG,
- 1080,
+ port,
NULL, NULL, &ahc_echo, &done_flag,
MHD_OPTION_CONNECTION_TIMEOUT, 2,
MHD_OPTION_NOTIFY_COMPLETED, &termination_cb,
&withTimeout,
MHD_OPTION_END);
if (d == NULL)
return 1;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
c = curl_easy_init ();
- curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:1080/hello_world");
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/hello_world");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
curl_easy_setopt (c, CURLOPT_READFUNCTION, &putBuffer);
@@ -223,20 +242,39 @@ testWithTimeout ()
struct CBC cbc;
int done_flag = 0;
CURLcode errornum;
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ {
+ port = 1501;
+ if (oneone)
+ port += 5;
+ }
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG,
- 1080,
+ port,
NULL, NULL, &ahc_echo, &done_flag,
MHD_OPTION_CONNECTION_TIMEOUT, 2,
MHD_OPTION_NOTIFY_COMPLETED, &termination_cb,
&withoutTimeout,
MHD_OPTION_END);
if (d == NULL)
return 16;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
c = curl_easy_init ();
- curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:1080/hello_world");
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/hello_world");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
curl_easy_setopt (c, CURLOPT_READFUNCTION, &putBuffer_fail);
diff --git a/src/testcurl/test_urlparse.c b/src/testcurl/test_urlparse.c
index 9c1e64a8..980a46b2 100644
--- a/src/testcurl/test_urlparse.c
+++ b/src/testcurl/test_urlparse.c
@@ -130,16 +130,35 @@ testInternalGet (int poll_flag)
char buf[2048];
struct CBC cbc;
CURLcode errornum;
+ int port;
+
+ if (MHD_NO != MHD_is_feature_supported (MHD_FEATURE_AUTODETECT_BIND_PORT))
+ port = 0;
+ else
+ {
+ port = 1510;
+ if (oneone)
+ port += 5;
+ }
cbc.buf = buf;
cbc.size = 2048;
cbc.pos = 0;
d = MHD_start_daemon (MHD_USE_INTERNAL_POLLING_THREAD | MHD_USE_ERROR_LOG |
poll_flag,
- 11080, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
+ port, NULL, NULL, &ahc_echo, "GET", MHD_OPTION_END);
if (d == NULL)
return 1;
+ if (0 == port)
+ {
+ const union MHD_DaemonInfo *dinfo;
+ dinfo = MHD_get_daemon_info (d, MHD_DAEMON_INFO_BIND_PORT);
+ if (NULL == dinfo || 0 == dinfo->port)
+ { MHD_stop_daemon (d); return 32; }
+ port = (int)dinfo->port;
+ }
c = curl_easy_init ();
- curl_easy_setopt (c, CURLOPT_URL,
"http://127.0.0.1:11080/hello_world?a=b&c=&d");
+ curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1/hello_world?a=b&c=&d");
+ curl_easy_setopt (c, CURLOPT_PORT, (long)port);
curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, ©Buffer);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
curl_easy_setopt (c, CURLOPT_FAILONERROR, 1);
--
To stop receiving notification emails like this one, please contact
address@hidden
- [GNUnet-SVN] [libmicrohttpd] branch master updated (8eb8e558 -> e8d937be), gnunet, 2017/06/15
- [GNUnet-SVN] [libmicrohttpd] 05/06: test_daemon: fixed error description, resource leak, gnunet, 2017/06/15
- [GNUnet-SVN] [libmicrohttpd] 01/06: Configure: removed unwanted extra square brackets, gnunet, 2017/06/15
- [GNUnet-SVN] [libmicrohttpd] 02/06: Correctly initialize IPv6 "any" address and non-standard IPv4 "any" address., gnunet, 2017/06/15
- [GNUnet-SVN] [libmicrohttpd] 04/06: MHD_get_daemon_info(): return bind port number by MHD_DAEMON_INFO_BIND_PORT, gnunet, 2017/06/15
- [GNUnet-SVN] [libmicrohttpd] 03/06: MHD_start_daemon(): added port autodetection if '0' (autoselect) is used for port number, Added new MHD_FEATURE value MHD_FEATURE_AUTODETECT_BIND_PORT., gnunet, 2017/06/15
- [GNUnet-SVN] [libmicrohttpd] 06/06: Make testsuite parallel build compatible (part 1),
gnunet <=