gnunet-svn
[Top][All Lists]
Advanced

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

[libmicrohttpd] branch master updated (ebd43f03 -> b70fa61d)


From: gnunet
Subject: [libmicrohttpd] branch master updated (ebd43f03 -> b70fa61d)
Date: Wed, 18 Aug 2021 11:56:18 +0200

This is an automated email from the git hooks/post-receive script.

karlson2k pushed a change to branch master
in repository libmicrohttpd.

    from ebd43f03 -bump version
     new 0c3806b0 curl tests: updated select() error handling, file doxy
     new be6faace microhttpd.h: minor macro formatting
     new 49690001 RFC compliance: use chunked even for non-Keep-Alive HTTP/1.1 
clients
     new b70fa61d test_get_chunked: check whether chunked is used for 
non-Keep-Alive

The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 src/include/microhttpd.h                      | 25 +++++++++--------
 src/microhttpd/connection.c                   | 13 +++++----
 src/testcurl/Makefile.am                      |  8 ++++++
 src/testcurl/curl_version_check.c             |  2 ++
 src/testcurl/mhd_has_in_name.h                |  2 +-
 src/testcurl/perf_get.c                       | 30 +++++++++++++-------
 src/testcurl/perf_get_concurrent.c            | 37 ++++++++++++++-----------
 src/testcurl/test_add_conn.c                  | 25 +++++++++++------
 src/testcurl/test_callback.c                  | 20 +++++++++++---
 src/testcurl/test_concurrent_stop.c           |  6 ++--
 src/testcurl/test_delete.c                    | 24 +++++++++++-----
 src/testcurl/test_digestauth.c                |  2 ++
 src/testcurl/test_digestauth_sha256.c         |  2 ++
 src/testcurl/test_digestauth_with_arguments.c |  2 ++
 src/testcurl/test_get.c                       | 25 +++++++++++------
 src/testcurl/test_get_chunked.c               | 26 ++++++++++-------
 src/testcurl/test_get_close_keep_alive.c      | 40 +++++++++++++++++----------
 src/testcurl/test_get_empty.c                 | 24 +++++++++++-----
 src/testcurl/test_get_iovec.c                 | 22 ++++++++++-----
 src/testcurl/test_get_response_cleanup.c      | 40 +++++++++++++++++++++++++--
 src/testcurl/test_get_sendfile.c              | 24 +++++++++++-----
 src/testcurl/test_get_wait.c                  |  2 +-
 src/testcurl/test_iplimit.c                   |  5 ++--
 src/testcurl/test_large_put.c                 | 24 +++++++++++-----
 src/testcurl/test_long_header.c               |  2 ++
 src/testcurl/test_parse_cookies.c             | 24 +++++++++++-----
 src/testcurl/test_patch.c                     | 24 +++++++++++-----
 src/testcurl/test_post.c                      | 24 +++++++++++-----
 src/testcurl/test_post_loop.c                 | 27 ++++++++++++++----
 src/testcurl/test_postform.c                  | 24 +++++++++++-----
 src/testcurl/test_process_arguments.c         | 24 +++++++++++-----
 src/testcurl/test_process_headers.c           | 24 +++++++++++-----
 src/testcurl/test_put.c                       | 24 +++++++++++-----
 src/testcurl/test_put_chunked.c               | 24 +++++++++++-----
 src/testcurl/test_quiesce.c                   | 30 +++++++++++++-------
 src/testcurl/test_quiesce_stream.c            |  1 +
 src/testcurl/test_termination.c               |  2 ++
 src/testcurl/test_timeout.c                   |  2 ++
 src/testcurl/test_urlparse.c                  |  2 ++
 39 files changed, 485 insertions(+), 203 deletions(-)

diff --git a/src/include/microhttpd.h b/src/include/microhttpd.h
index 5ae7d8cf..d2b63947 100644
--- a/src/include/microhttpd.h
+++ b/src/include/microhttpd.h
@@ -131,7 +131,7 @@ typedef intptr_t ssize_t;
  * they are parsed as decimal numbers.
  * Example: 0x01093001 = 1.9.30-1.
  */
-#define MHD_VERSION 0x00097304
+#define MHD_VERSION 0x00097306
 
 
 #ifdef __has_attribute
@@ -245,10 +245,11 @@ typedef SOCKET MHD_socket;
 #elif defined(__clang__) || defined (__GNUC_PATCHLEVEL__)
 /* clang or GCC since 3.0 */
 #define _MHD_GCC_PRAG(x) _Pragma(#x)
-#if (defined(__clang__) && (__clang_major__ + 0 >= 5 ||     \
-                            (! defined(__apple_build_version__) && \
-  (__clang_major__ + 0  > 3 || (__clang_major__ + 0 == 3 && __clang_minor__ >= 
\
-                                3))))) || \
+#if (defined(__clang__) && \
+  (__clang_major__ + 0 >= 5 || \
+   (! defined(__apple_build_version__) && \
+  (__clang_major__ + 0  > 3 || \
+   (__clang_major__ + 0 == 3 && __clang_minor__ >=  3))))) || \
   __GNUC__ + 0 > 4 || (__GNUC__ + 0 == 4 && __GNUC_MINOR__ + 0 >= 8)
 /* clang >= 3.3 (or XCode's clang >= 5.0) or
    GCC >= 4.8 */
@@ -257,9 +258,9 @@ typedef SOCKET MHD_socket;
 #else /* older clang or GCC */
 /* clang < 3.3, XCode's clang < 5.0, 3.0 <= GCC < 4.8 */
 #define _MHD_DEPR_MACRO(msg) _MHD_GCC_PRAG (message msg)
-#if (defined(__clang__) && (__clang_major__ + 0  > 2 || (__clang_major__ + 0 
== \
-                                                         2 && __clang_minor__ 
>= \
-                                                         9)))                  
                          /* FIXME: clang >= 2.9, earlier versions not tested */
+#if (defined(__clang__) && \
+  (__clang_major__ + 0  > 2 || \
+   (__clang_major__ + 0 == 2 && __clang_minor__ >= 9)))  /* clang >= 2.9 */
 /* clang handles inline pragmas better than GCC */
 #define _MHD_DEPR_IN_MACRO(msg) _MHD_DEPR_MACRO (msg)
 #endif /* clang >= 2.9 */
@@ -285,12 +286,12 @@ typedef SOCKET MHD_socket;
 /* VS .NET 2003 deprecation do not support custom messages */
 #define _MHD_DEPR_FUNC(msg) __declspec(deprecated)
 #elif (__GNUC__ + 0 >= 5) || (defined (__clang__) && \
-  (__clang_major__ + 0 > 2 || (__clang_major__ + 0 == 2 && __clang_minor__ >= \
-                               9)))                                            
 /* FIXME: earlier versions not tested */
+  (__clang_major__ + 0 > 2 || \
+   (__clang_major__ + 0 == 2 && __clang_minor__ >=  9)))
 /* GCC >= 5.0 or clang >= 2.9 */
 #define _MHD_DEPR_FUNC(msg) __attribute__((deprecated (msg)))
-#elif defined (__clang__) || __GNUC__ + 0 > 3 || (__GNUC__ + 0 == 3 && \
-                                                  __GNUC_MINOR__ + 0 >= 1)
+#elif defined (__clang__) || __GNUC__ + 0 > 3 || \
+  (__GNUC__ + 0 == 3 && __GNUC_MINOR__ + 0 >= 1)
 /* 3.1 <= GCC < 5.0 or clang < 2.9 */
 /* old GCC-style deprecation do not support custom messages */
 #define _MHD_DEPR_FUNC(msg) __attribute__((__deprecated__))
diff --git a/src/microhttpd/connection.c b/src/microhttpd/connection.c
index b7505762..bb0bd681 100644
--- a/src/microhttpd/connection.c
+++ b/src/microhttpd/connection.c
@@ -1630,19 +1630,22 @@ setup_reply_properties (struct MHD_Connection 
*connection)
       else if (0 != (r->flags & (MHD_RF_HTTP_VERSION_1_0_ONLY
                                  | MHD_RF_HTTP_VERSION_1_0_RESPONSE)))
         use_chunked = false;
-      /* TODO: Use chunked for HTTP/1.1 non-Keep-Alive */
-      else if (0 != (r->flags_auto & MHD_RAF_HAS_TRANS_ENC_CHUNKED))
-        use_chunked = true;
-      else if (! use_keepalive)
-        use_chunked = false;
       else
+        /* If chunked encoding is supported and allowed, and response size
+         * is unknown, use chunked even for non-Keep-Alive connections.
+         * See https://datatracker.ietf.org/doc/html/rfc7230#section-3.3.3
+         * Also use chunked if it is enforced by application and supported by
+         * the client. */
         use_chunked = true;
     }
     else
       use_chunked = false;
 
     if ( (MHD_SIZE_UNKNOWN == r->total_size) && ! use_chunked)
+    {
+      mhd_assert (! MHD_IS_HTTP_VER_1_1_COMPAT (c->http_ver));
       use_keepalive = false; /* End of the stream is indicated by closure */
+    }
   }
 
   c->rp_props.chunked = use_chunked;
diff --git a/src/testcurl/Makefile.am b/src/testcurl/Makefile.am
index 2a6f58cb..b8a56bc1 100644
--- a/src/testcurl/Makefile.am
+++ b/src/testcurl/Makefile.am
@@ -118,7 +118,9 @@ check_PROGRAMS = \
   test_get_chunked_empty_sized \
   test_get_chunked_close_empty_sized \
   test_get_chunked_forced \
+  test_get_chunked_close_forced \
   test_get_chunked_empty_forced \
+  test_get_chunked_close_empty_forced \
   test_put_chunked \
   test_callback \
   $(EMPTY_ITEM)
@@ -294,9 +296,15 @@ test_get_chunked_close_empty_sized_SOURCES = \
 test_get_chunked_forced_SOURCES = \
   test_get_chunked.c
 
+test_get_chunked_close_forced_SOURCES = \
+  test_get_chunked.c
+
 test_get_chunked_empty_forced_SOURCES = \
   test_get_chunked.c
 
+test_get_chunked_close_empty_forced_SOURCES = \
+  test_get_chunked.c
+
 test_post_SOURCES = \
   test_post.c mhd_has_in_name.h
 
diff --git a/src/testcurl/curl_version_check.c 
b/src/testcurl/curl_version_check.c
index e77cf7d6..8678d452 100644
--- a/src/testcurl/curl_version_check.c
+++ b/src/testcurl/curl_version_check.c
@@ -1,6 +1,7 @@
 /*
      This file is part of libmicrohttpd
      Copyright (C) 2007 Christian Grothoff
+     Copyright (C) 2016-2021 Evgeny Grin (Karlson2k)
 
      libmicrohttpd is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -22,6 +23,7 @@
  * @file curl_version_check.c
  * @brief  verify required cURL version is available to run tests
  * @author Sagie Amir
+ * @author Karlson2k (Evgeny Grin)
  */
 
 #include "MHD_config.h"
diff --git a/src/testcurl/mhd_has_in_name.h b/src/testcurl/mhd_has_in_name.h
index aff15e15..570a2332 100644
--- a/src/testcurl/mhd_has_in_name.h
+++ b/src/testcurl/mhd_has_in_name.h
@@ -1,6 +1,6 @@
 /*
   This file is part of libmicrohttpd
-  Copyright (C) 2016-2019 Karlson2k (Evgeny Grin)
+  Copyright (C) 2016-2021 Karlson2k (Evgeny Grin)
 
   This library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
diff --git a/src/testcurl/perf_get.c b/src/testcurl/perf_get.c
index 90aa6d25..9a7e3e08 100644
--- a/src/testcurl/perf_get.c
+++ b/src/testcurl/perf_get.c
@@ -1,6 +1,7 @@
 /*
      This file is part of libmicrohttpd
      Copyright (C) 2007, 2009, 2011 Christian Grothoff
+     Copyright (C) 2014-2021 Evgeny Grin (Karlson2k)
 
      libmicrohttpd is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -34,6 +35,7 @@
  *        not universally meaningful (i.e. when comparing
  *        multithreaded vs. single-threaded or select/poll).
  * @author Christian Grothoff
+ * @author Karlson2k (Evgeny Grin)
  */
 
 #include "MHD_config.h"
@@ -543,17 +545,25 @@ testExternalGet (int port)
       tv.tv_usec = 1000;
       if (-1 == select (maxposixs + 1, &rs, &ws, &es, &tv))
       {
-#ifdef MHD_POSIX_SOCKETS
+  #ifdef MHD_POSIX_SOCKETS
         if (EINTR != errno)
-          abort ();
-#else
-        if ((WSAEINVAL != WSAGetLastError ()) || (0 != rs.fd_count) || (0 !=
-                                                                        ws.
-                                                                        
fd_count)
-            || (0 != es.fd_count) )
-          abort ();
-        Sleep (1000);
-#endif
+        {
+          fprintf (stderr, "Unexpected select() error: %d. Line: %d\n",
+                   (int) errno, __LINE__);
+          fflush (stderr);
+          exit (99);
+        }
+  #else
+        if ((WSAEINVAL != WSAGetLastError ()) ||
+            (0 != rs.fd_count) || (0 != ws.fd_count) || (0 != es.fd_count) )
+        {
+          fprintf (stderr, "Unexpected select() error: %d. Line: %d\n",
+                   (int) WSAGetLastError (), __LINE__);
+          fflush (stderr);
+          exit (99);
+        }
+        Sleep (1);
+  #endif
       }
       curl_multi_perform (multi, &running);
       if (0 == running)
diff --git a/src/testcurl/perf_get_concurrent.c 
b/src/testcurl/perf_get_concurrent.c
index 0cfd1366..76bb42f9 100644
--- a/src/testcurl/perf_get_concurrent.c
+++ b/src/testcurl/perf_get_concurrent.c
@@ -1,6 +1,7 @@
 /*
      This file is part of libmicrohttpd
      Copyright (C) 2007, 2009, 2011 Christian Grothoff
+     Copyright (C) 2014-2021 Evgeny Grin (Karlson2k)
 
      libmicrohttpd is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -30,6 +31,7 @@
  *        (since MHD is actually better); only the relative
  *        scores between MHD versions are meaningful.
  * @author Christian Grothoff
+ * @author Karlson2k (Evgeny Grin)
  */
 
 #include "MHD_config.h"
@@ -203,7 +205,7 @@ thread_gets (void *param)
      setting NOSIGNAL results in really weird
      crashes on my system! */
   curl_easy_setopt (c, CURLOPT_NOSIGNAL, 1L);
-  for (i = 0; i<ROUNDS; i++)
+  for (i = 0; i < ROUNDS; i++)
   {
     if (CURLE_OK != (errornum = curl_easy_perform (c)))
     {
@@ -233,7 +235,7 @@ do_gets (void *param)
             sizeof (url),
             "http://127.0.0.1:%d/hello_world";,
             port);
-  for (j = 0; j<PAR; j++)
+  for (j = 0; j < PAR; j++)
   {
     if (0 != pthread_create (&par[j], NULL, &thread_gets, (void*) url))
     {
@@ -242,7 +244,7 @@ do_gets (void *param)
       return "pthread_create error";
     }
   }
-  for (j = 0; j<PAR; j++)
+  for (j = 0; j < PAR; j++)
   {
     char *ret_val;
     if ((0 != pthread_join (par[j], (void**) &ret_val)) ||
@@ -461,23 +463,26 @@ testExternalGet (int port)
     if (-1 == select (max + 1, &rs, &ws, &es, &tv))
     {
 #ifdef MHD_POSIX_SOCKETS
-      if (EINTR == errno)
-        continue;
-      fprintf (stderr,
-               "select failed: %s\n",
-               strerror (errno));
-#else
-      if ((WSAEINVAL == WSAGetLastError ()) && (0 == rs.fd_count) && (0 ==
-                                                                      ws.
-                                                                      fd_count)
-          && (0 == es.fd_count) )
+      if (EINTR != errno)
       {
-        Sleep (1000);
-        continue;
+        fprintf (stderr, "Unexpected select() error: %d. Line: %d\n",
+                 (int) errno, __LINE__);
+        fflush (stderr);
+        exit (99);
       }
-#endif
       ret |= 1024;
       break;
+#else
+      if ((WSAEINVAL != WSAGetLastError ()) ||
+          (0 != rs.fd_count) || (0 != ws.fd_count) || (0 != es.fd_count) )
+      {
+        fprintf (stderr, "Unexpected select() error: %d. Line: %d\n",
+                 (int) WSAGetLastError (), __LINE__);
+        fflush (stderr);
+        exit (99);
+      }
+      Sleep (1);
+#endif
     }
     MHD_run_from_select (d, &rs, &ws, &es);
   }
diff --git a/src/testcurl/test_add_conn.c b/src/testcurl/test_add_conn.c
index d122a50e..04def886 100644
--- a/src/testcurl/test_add_conn.c
+++ b/src/testcurl/test_add_conn.c
@@ -1,7 +1,8 @@
 /*
      This file is part of libmicrohttpd
      Copyright (C) 2007, 2009, 2011 Christian Grothoff
-     Copyright (C) 2020 Karlson2k (Evgeny Grin) - large rework, multithreading.
+     Copyright (C) 2014-2020 Evgeny Grin (Karlson2k) - large rework,
+                             multithreading.
 
      libmicrohttpd is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -922,14 +923,22 @@ testExternalGet (void)
     {
 #ifdef MHD_POSIX_SOCKETS
       if (EINTR != errno)
-        externalErrorExitDesc ("select() failed");
+      {
+        fprintf (stderr, "Unexpected select() error: %d. Line: %d\n",
+                 (int) errno, __LINE__);
+        fflush (stderr);
+        exit (99);
+      }
 #else
-      if ((WSAEINVAL != WSAGetLastError ()) || (0 != rs.fd_count) || (0 !=
-                                                                      ws.
-                                                                      fd_count)
-          || (0 != es.fd_count) )
-        externalErrorExitDesc ("select() failed");
-      Sleep (1000);
+      if ((WSAEINVAL != WSAGetLastError ()) ||
+          (0 != rs.fd_count) || (0 != ws.fd_count) || (0 != es.fd_count) )
+      {
+        fprintf (stderr, "Unexpected select() error: %d. Line: %d\n",
+                 (int) WSAGetLastError (), __LINE__);
+        fflush (stderr);
+        exit (99);
+      }
+      Sleep (1);
 #endif
     }
     if (FD_ISSET (aParam.lstn_sk, &rs))
diff --git a/src/testcurl/test_callback.c b/src/testcurl/test_callback.c
index d2894c06..8290851c 100644
--- a/src/testcurl/test_callback.c
+++ b/src/testcurl/test_callback.c
@@ -1,6 +1,7 @@
 /*
      This file is part of libmicrohttpd
      Copyright (C) 2007, 2009, 2011 Christian Grothoff
+     Copyright (C) 2014-2021 Evgeny Grin (Karlson2k)
 
      libmicrohttpd is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -22,6 +23,7 @@
  * @brief Testcase for MHD not calling the callback too often
  * @author Jan Seeger
  * @author Christian Grothoff
+ * @author Karlson2k (Evgeny Grin)
  */
 #include "MHD_config.h"
 #include "platform.h"
@@ -217,12 +219,22 @@ main (int argc, char **argv)
     {
 #ifdef MHD_POSIX_SOCKETS
       if (EINTR != errno)
-        abort ();
+      {
+        fprintf (stderr, "Unexpected select() error: %d. Line: %d\n",
+                 (int) errno, __LINE__);
+        fflush (stderr);
+        exit (99);
+      }
 #else
       if ((WSAEINVAL != WSAGetLastError ()) ||
-          (0 != rs.fd_count) || (0 != ws.fd_count) || (0 != es.fd_count))
-        abort ();
-      Sleep (1000);
+          (0 != rs.fd_count) || (0 != ws.fd_count) || (0 != es.fd_count) )
+      {
+        fprintf (stderr, "Unexpected select() error: %d. Line: %d\n",
+                 (int) WSAGetLastError (), __LINE__);
+        fflush (stderr);
+        exit (99);
+      }
+      Sleep (1);
 #endif
     }
     if (NULL != multi)
diff --git a/src/testcurl/test_concurrent_stop.c 
b/src/testcurl/test_concurrent_stop.c
index 7def86a8..6cea8abf 100644
--- a/src/testcurl/test_concurrent_stop.c
+++ b/src/testcurl/test_concurrent_stop.c
@@ -1,6 +1,7 @@
 /*
      This file is part of libmicrohttpd
      Copyright (C) 2007, 2009, 2011, 2015, 2016 Christian Grothoff
+     Copyright (C) 2014-2021 Evgeny Grin (Karlson2k)
 
      libmicrohttpd is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -22,6 +23,7 @@
  * @file test_concurrent_stop.c
  * @brief test stopping server while concurrent GETs are ongoing
  * @author Christian Grothoff
+ * @author Karlson2k (Evgeny Grin)
  */
 #include "MHD_config.h"
 #include "platform.h"
@@ -222,7 +224,7 @@ do_gets (void *param)
             "http://127.0.0.1:%d/hello_world";,
             port);
 
-  for (j = 0; j<PAR; j++)
+  for (j = 0; j < PAR; j++)
   {
     if (0 != pthread_create (&par[j], NULL, &thread_gets, (void*) url))
     {
@@ -236,7 +238,7 @@ do_gets (void *param)
     }
   }
   (void) sleep (1);
-  for (j = 0; j<PAR; j++)
+  for (j = 0; j < PAR; j++)
   {
     pthread_join (par[j], NULL);
   }
diff --git a/src/testcurl/test_delete.c b/src/testcurl/test_delete.c
index bfb0ea47..7ecaa3e9 100644
--- a/src/testcurl/test_delete.c
+++ b/src/testcurl/test_delete.c
@@ -1,6 +1,7 @@
 /*
      This file is part of libmicrohttpd
      Copyright (C) 2007, 2016 Christian Grothoff
+     Copyright (C) 2014-2021 Evgeny Grin (Karlson2k)
 
      libmicrohttpd is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -22,6 +23,7 @@
  * @file daemontest_delete.c
  * @brief  Testcase for libmicrohttpd DELETE operations
  * @author Christian Grothoff
+ * @author Karlson2k (Evgeny Grin)
  */
 
 #include "MHD_config.h"
@@ -471,14 +473,22 @@ testExternalDelete ()
     {
 #ifdef MHD_POSIX_SOCKETS
       if (EINTR != errno)
-        abort ();
+      {
+        fprintf (stderr, "Unexpected select() error: %d. Line: %d\n",
+                 (int) errno, __LINE__);
+        fflush (stderr);
+        exit (99);
+      }
 #else
-      if ((WSAEINVAL != WSAGetLastError ()) || (0 != rs.fd_count) || (0 !=
-                                                                      ws.
-                                                                      fd_count)
-          || (0 != es.fd_count) )
-        abort ();
-      Sleep (1000);
+      if ((WSAEINVAL != WSAGetLastError ()) ||
+          (0 != rs.fd_count) || (0 != ws.fd_count) || (0 != es.fd_count) )
+      {
+        fprintf (stderr, "Unexpected select() error: %d. Line: %d\n",
+                 (int) WSAGetLastError (), __LINE__);
+        fflush (stderr);
+        exit (99);
+      }
+      Sleep (1);
 #endif
     }
     curl_multi_perform (multi, &running);
diff --git a/src/testcurl/test_digestauth.c b/src/testcurl/test_digestauth.c
index 389cfd5a..e93a13bb 100644
--- a/src/testcurl/test_digestauth.c
+++ b/src/testcurl/test_digestauth.c
@@ -1,6 +1,7 @@
 /*
      This file is part of libmicrohttpd
      Copyright (C) 2010 Christian Grothoff
+     Copyright (C) 2016-2021 Evgeny Grin (Karlson2k)
 
      libmicrohttpd is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -22,6 +23,7 @@
  * @file daemontest_digestauth.c
  * @brief  Testcase for libmicrohttpd Digest Auth
  * @author Amr Ali
+ * @author Karlson2k (Evgeny Grin)
  */
 
 #include "MHD_config.h"
diff --git a/src/testcurl/test_digestauth_sha256.c 
b/src/testcurl/test_digestauth_sha256.c
index 5023bcad..7cb9557e 100644
--- a/src/testcurl/test_digestauth_sha256.c
+++ b/src/testcurl/test_digestauth_sha256.c
@@ -1,6 +1,7 @@
 /*
      This file is part of libmicrohttpd
      Copyright (C) 2010, 2018 Christian Grothoff
+     Copyright (C) 2019-2021 Evgeny Grin (Karlson2k)
 
      libmicrohttpd is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -23,6 +24,7 @@
  * @brief  Testcase for libmicrohttpd Digest Auth with SHA256
  * @author Amr Ali
  * @author Christian Grothoff
+ * @author Karlson2k (Evgeny Grin)
  */
 
 #include "MHD_config.h"
diff --git a/src/testcurl/test_digestauth_with_arguments.c 
b/src/testcurl/test_digestauth_with_arguments.c
index c6154ffb..2132ca93 100644
--- a/src/testcurl/test_digestauth_with_arguments.c
+++ b/src/testcurl/test_digestauth_with_arguments.c
@@ -1,6 +1,7 @@
 /*
      This file is part of libmicrohttpd
      Copyright (C) 2010, 2012 Christian Grothoff
+     Copyright (C) 2016-2021 Evgeny Grin (Karlson2k)
 
      libmicrohttpd is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -22,6 +23,7 @@
  * @file daemontest_digestauth_with_arguments.c
  * @brief  Testcase for libmicrohttpd Digest Auth with arguments
  * @author Amr Ali
+ * @author Karlson2k (Evgeny Grin)
  */
 #include "MHD_config.h"
 #include "platform.h"
diff --git a/src/testcurl/test_get.c b/src/testcurl/test_get.c
index 971bfc82..68ff6218 100644
--- a/src/testcurl/test_get.c
+++ b/src/testcurl/test_get.c
@@ -1,6 +1,7 @@
 /*
      This file is part of libmicrohttpd
      Copyright (C) 2007, 2009, 2011 Christian Grothoff
+     Copyright (C) 2014-2021 Evgeny Grin (Karlson2k)
 
      libmicrohttpd is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -20,8 +21,8 @@
 /**
  * @file test_get.c
  * @brief  Testcase for libmicrohttpd GET operations
- *         TODO: test parsing of query
  * @author Christian Grothoff
+ * @author Karlson2k (Evgeny Grin)
  */
 #include "MHD_config.h"
 #include "platform.h"
@@ -508,14 +509,22 @@ testExternalGet ()
     {
 #ifdef MHD_POSIX_SOCKETS
       if (EINTR != errno)
-        abort ();
+      {
+        fprintf (stderr, "Unexpected select() error: %d. Line: %d\n",
+                 (int) errno, __LINE__);
+        fflush (stderr);
+        exit (99);
+      }
 #else
-      if ((WSAEINVAL != WSAGetLastError ()) || (0 != rs.fd_count) || (0 !=
-                                                                      ws.
-                                                                      fd_count)
-          || (0 != es.fd_count) )
-        _exit (99);
-      Sleep (1000);
+      if ((WSAEINVAL != WSAGetLastError ()) ||
+          (0 != rs.fd_count) || (0 != ws.fd_count) || (0 != es.fd_count) )
+      {
+        fprintf (stderr, "Unexpected select() error: %d. Line: %d\n",
+                 (int) WSAGetLastError (), __LINE__);
+        fflush (stderr);
+        exit (99);
+      }
+      Sleep (1);
 #endif
     }
     curl_multi_perform (multi, &running);
diff --git a/src/testcurl/test_get_chunked.c b/src/testcurl/test_get_chunked.c
index b4644e5b..5e6bdd76 100644
--- a/src/testcurl/test_get_chunked.c
+++ b/src/testcurl/test_get_chunked.c
@@ -1,7 +1,7 @@
 /*
      This file is part of libmicrohttpd
      Copyright (C) 2007 Christian Grothoff
-     Copyright (C) 2015-2021 Karlson2k (Evgeny Grin)
+     Copyright (C) 2014-2021 Evgeny Grin (Karlson2k)
 
      libmicrohttpd is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -675,14 +675,22 @@ testExternalGet ()
     {
 #ifdef MHD_POSIX_SOCKETS
       if (EINTR != errno)
-        abort ();
+      {
+        fprintf (stderr, "Unexpected select() error: %d. Line: %d\n",
+                 (int) errno, __LINE__);
+        fflush (stderr);
+        exit (99);
+      }
 #else
-      if ((WSAEINVAL != WSAGetLastError ()) || (0 != rs.fd_count) || (0 !=
-                                                                      ws.
-                                                                      fd_count)
-          || (0 != es.fd_count) )
-        abort ();
-      Sleep (1000);
+      if ((WSAEINVAL != WSAGetLastError ()) ||
+          (0 != rs.fd_count) || (0 != ws.fd_count) || (0 != es.fd_count) )
+      {
+        fprintf (stderr, "Unexpected select() error: %d. Line: %d\n",
+                 (int) WSAGetLastError (), __LINE__);
+        fflush (stderr);
+        exit (99);
+      }
+      Sleep (1);
 #endif
     }
     curl_multi_perform (multi, &running);
@@ -763,8 +771,6 @@ main (int argc, char *const *argv)
     resp_sized = ! 0;
   if (resp_sized)
     chunked_forced = ! 0;
-  if (conn_close) /* TODO: remove when supported by MHD */
-    chunked_forced = ! 0;
   if (MHD_YES == MHD_is_feature_supported (MHD_FEATURE_THREADS))
   {
     errorCount += testInternalGet ();
diff --git a/src/testcurl/test_get_close_keep_alive.c 
b/src/testcurl/test_get_close_keep_alive.c
index 1dbf7cc4..faa0f202 100644
--- a/src/testcurl/test_get_close_keep_alive.c
+++ b/src/testcurl/test_get_close_keep_alive.c
@@ -1,6 +1,6 @@
 /*
      This file is part of libmicrohttpd
-     Copyright (C) 2017-2021 Karlson2k (Evgeny Grin)
+     Copyright (C) 2014-2021 Evgeny Grin (Karlson2k)
      Copyright (C) 2007, 2009, 2011 Christian Grothoff
 
      libmicrohttpd is free software; you can redistribute it and/or modify
@@ -113,7 +113,7 @@ _externalErrorExit_func (const char *errDesc, const char 
*funcName, int lineNum)
   fprintf (stderr, "WSAGetLastError() value: %d\n", (int) WSAGetLastError ());
 #endif /* MHD_WINSOCK_SOCKETS */
   fflush (stderr);
-  _exit (99);
+  exit (99);
 }
 
 
@@ -137,7 +137,7 @@ _libcurlErrorExit_func (const char *errDesc, const char 
*funcName, int lineNum)
     fprintf (stderr, "Last libcurl error details: %s\n", libcurl_errbuf);
 
   fflush (stderr);
-  _exit (99);
+  exit (99);
 }
 
 
@@ -274,7 +274,7 @@ log_cb (void *cls,
     fprintf (stderr,
              "Wrong URI: `%s', line: %d\n",
              uri, __LINE__);
-    _exit (22);
+    exit (22);
   }
   return NULL;
 }
@@ -314,7 +314,7 @@ ahc_echo (void *cls,
   if (NULL == response)
   {
     fprintf (stderr, "Failed to create response. Line: %d\n", __LINE__);
-    _exit (19);
+    exit (19);
   }
   if (add_mhd_close)
   {
@@ -323,7 +323,7 @@ ahc_echo (void *cls,
                                            HDR_CONN_CLOSE_VALUE))
     {
       fprintf (stderr, "Failed to add header. Line: %d\n", __LINE__);
-      _exit (19);
+      exit (19);
     }
   }
   ret = MHD_queue_response (connection,
@@ -333,7 +333,7 @@ ahc_echo (void *cls,
   if (ret == MHD_NO)
   {
     fprintf (stderr, "Failed to queue response. Line: %d\n", __LINE__);
-    _exit (19);
+    exit (19);
   }
   return ret;
 }
@@ -523,11 +523,11 @@ performQueryExternal (struct MHD_Daemon *d, CURL *c)
     if (MHD_YES != MHD_get_fdset (d, &rs, &ws, &es, &maxMhdSk))
     {
       fprintf (stderr, "MHD_get_fdset() failed. Line: %d\n", __LINE__);
-      _exit (11);
+      exit (11);
       break;
     }
     tv.tv_sec = 0;
-    tv.tv_usec = 10000;
+    tv.tv_usec = 1000;
 #ifdef MHD_POSIX_SOCKETS
     if (maxMhdSk > maxCurlSk)
       maxCurlSk = maxMhdSk;
@@ -536,18 +536,28 @@ performQueryExternal (struct MHD_Daemon *d, CURL *c)
     {
 #ifdef MHD_POSIX_SOCKETS
       if (EINTR != errno)
-        externalErrorExitDesc ("select() failed");
+      {
+        fprintf (stderr, "Unexpected select() error: %d. Line: %d\n",
+                 (int) errno, __LINE__);
+        fflush (stderr);
+        exit (99);
+      }
 #else
       if ((WSAEINVAL != WSAGetLastError ()) ||
-          (0 != rs.fd_count) || (0 != ws.fd_count) || (0 != es.fd_count))
-        externalErrorExitDesc ("select() failed");
-      Sleep (10);
+          (0 != rs.fd_count) || (0 != ws.fd_count) || (0 != es.fd_count) )
+      {
+        fprintf (stderr, "Unexpected select() error: %d. Line: %d\n",
+                 (int) WSAGetLastError (), __LINE__);
+        fflush (stderr);
+        exit (99);
+      }
+      Sleep (1);
 #endif
     }
     if (MHD_YES != MHD_run_from_select (d, &rs, &ws, &es))
     {
       fprintf (stderr, "MHD_run_from_select() failed. Line: %d\n", __LINE__);
-      _exit (11);
+      exit (11);
     }
   }
 
@@ -706,7 +716,7 @@ doCurlQueryInThread (struct MHD_Daemon *d,
         fprintf (stderr, "MHD has wrong number of active connection (%u) "
                  "after response has been sent. Line: %d\n", num_conn,
                  __LINE__);
-        _exit (23);
+        exit (23);
       }
     }
   }
diff --git a/src/testcurl/test_get_empty.c b/src/testcurl/test_get_empty.c
index 53e45f71..87d30c4d 100644
--- a/src/testcurl/test_get_empty.c
+++ b/src/testcurl/test_get_empty.c
@@ -1,6 +1,7 @@
 /*
      This file is part of libmicrohttpd
      Copyright (C) 2007, 2009, 2011, 2019 Christian Grothoff
+     Copyright (C) 2014-2021 Evgeny Grin (Karlson2k)
 
      libmicrohttpd is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -21,6 +22,7 @@
  * @file test_get_empty.c
  * @brief  Testcase for libmicrohttpd GET operations returning an empty body
  * @author Christian Grothoff
+ * @author Karlson2k (Evgeny Grin)
  */
 #include "MHD_config.h"
 #include "platform.h"
@@ -470,14 +472,22 @@ testExternalGet ()
     {
 #ifdef MHD_POSIX_SOCKETS
       if (EINTR != errno)
-        abort ();
+      {
+        fprintf (stderr, "Unexpected select() error: %d. Line: %d\n",
+                 (int) errno, __LINE__);
+        fflush (stderr);
+        exit (99);
+      }
 #else
-      if ((WSAEINVAL != WSAGetLastError ()) || (0 != rs.fd_count) || (0 !=
-                                                                      ws.
-                                                                      fd_count)
-          || (0 != es.fd_count) )
-        _exit (99);
-      Sleep (1000);
+      if ((WSAEINVAL != WSAGetLastError ()) ||
+          (0 != rs.fd_count) || (0 != ws.fd_count) || (0 != es.fd_count) )
+      {
+        fprintf (stderr, "Unexpected select() error: %d. Line: %d\n",
+                 (int) WSAGetLastError (), __LINE__);
+        fflush (stderr);
+        exit (99);
+      }
+      Sleep (1);
 #endif
     }
     curl_multi_perform (multi, &running);
diff --git a/src/testcurl/test_get_iovec.c b/src/testcurl/test_get_iovec.c
index 90d4c123..dbb259b6 100644
--- a/src/testcurl/test_get_iovec.c
+++ b/src/testcurl/test_get_iovec.c
@@ -592,14 +592,22 @@ testExternalGet ()
     {
 #ifdef MHD_POSIX_SOCKETS
       if (EINTR != errno)
-        abort ();
+      {
+        fprintf (stderr, "Unexpected select() error: %d. Line: %d\n",
+                 (int) errno, __LINE__);
+        fflush (stderr);
+        exit (99);
+      }
 #else
-      if ((WSAEINVAL != WSAGetLastError ()) || (0 != rs.fd_count) || (0 !=
-                                                                      ws.
-                                                                      fd_count)
-          || (0 != es.fd_count) )
-        abort ();
-      Sleep (1000);
+      if ((WSAEINVAL != WSAGetLastError ()) ||
+          (0 != rs.fd_count) || (0 != ws.fd_count) || (0 != es.fd_count) )
+      {
+        fprintf (stderr, "Unexpected select() error: %d. Line: %d\n",
+                 (int) WSAGetLastError (), __LINE__);
+        fflush (stderr);
+        exit (99);
+      }
+      Sleep (1);
 #endif
     }
     curl_multi_perform (multi, &running);
diff --git a/src/testcurl/test_get_response_cleanup.c 
b/src/testcurl/test_get_response_cleanup.c
index 0bb154c8..bdb83e2d 100644
--- a/src/testcurl/test_get_response_cleanup.c
+++ b/src/testcurl/test_get_response_cleanup.c
@@ -2,6 +2,7 @@
 /*
      This file is part of libmicrohttpd
      Copyright (C) 2007, 2009 Christian Grothoff
+     Copyright (C) 2014-2021 Evgeny Grin (Karlson2k)
 
      libmicrohttpd is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -23,6 +24,7 @@
  * @file daemontest_get_response_cleanup.c
  * @brief  Testcase for libmicrohttpd response cleanup
  * @author Christian Grothoff
+ * @author Karlson2k (Evgeny Grin)
  */
 
 #include "MHD_config.h"
@@ -375,8 +377,25 @@ testExternalGet ()
     tv.tv_usec = 1000;
     if (-1 == select (max + 1, &rs, &ws, &es, &tv))
     {
+#ifdef MHD_POSIX_SOCKETS
       if (EINTR != errno)
-        abort ();
+      {
+        fprintf (stderr, "Unexpected select() error: %d. Line: %d\n",
+                 (int) errno, __LINE__);
+        fflush (stderr);
+        exit (99);
+      }
+#else
+      if ((WSAEINVAL != WSAGetLastError ()) ||
+          (0 != rs.fd_count) || (0 != ws.fd_count) || (0 != es.fd_count) )
+      {
+        fprintf (stderr, "Unexpected select() error: %d. Line: %d\n",
+                 (int) WSAGetLastError (), __LINE__);
+        fflush (stderr);
+        exit (99);
+      }
+      Sleep (1);
+#endif
     }
     MHD_run (d);
   }
@@ -397,8 +416,25 @@ testExternalGet ()
     tv.tv_usec = 1000;
     if (-1 == select (max + 1, &rs, &ws, &es, &tv))
     {
+#ifdef MHD_POSIX_SOCKETS
       if (EINTR != errno)
-        abort ();
+      {
+        fprintf (stderr, "Unexpected select() error: %d. Line: %d\n",
+                 (int) errno, __LINE__);
+        fflush (stderr);
+        exit (99);
+      }
+#else
+      if ((WSAEINVAL != WSAGetLastError ()) ||
+          (0 != rs.fd_count) || (0 != ws.fd_count) || (0 != es.fd_count) )
+      {
+        fprintf (stderr, "Unexpected select() error: %d. Line: %d\n",
+                 (int) WSAGetLastError (), __LINE__);
+        fflush (stderr);
+        exit (99);
+      }
+      Sleep (1);
+#endif
     }
     MHD_run (d);
   }
diff --git a/src/testcurl/test_get_sendfile.c b/src/testcurl/test_get_sendfile.c
index 9f1f82ae..c483da40 100644
--- a/src/testcurl/test_get_sendfile.c
+++ b/src/testcurl/test_get_sendfile.c
@@ -1,6 +1,7 @@
 /*
      This file is part of libmicrohttpd
      Copyright (C) 2007, 2009 Christian Grothoff
+     Copyright (C) 2014-2021 Evgeny Grin (Karlson2k)
 
      libmicrohttpd is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -21,6 +22,7 @@
  * @file test_get_sendfile.c
  * @brief  Testcase for libmicrohttpd response from FD
  * @author Christian Grothoff
+ * @author Karlson2k (Evgeny Grin)
  */
 
 #include "MHD_config.h"
@@ -449,14 +451,22 @@ testExternalGet ()
     {
 #ifdef MHD_POSIX_SOCKETS
       if (EINTR != errno)
-        abort ();
+      {
+        fprintf (stderr, "Unexpected select() error: %d. Line: %d\n",
+                 (int) errno, __LINE__);
+        fflush (stderr);
+        exit (99);
+      }
 #else
-      if ((WSAEINVAL != WSAGetLastError ()) || (0 != rs.fd_count) || (0 !=
-                                                                      ws.
-                                                                      fd_count)
-          || (0 != es.fd_count) )
-        abort ();
-      Sleep (1000);
+      if ((WSAEINVAL != WSAGetLastError ()) ||
+          (0 != rs.fd_count) || (0 != ws.fd_count) || (0 != es.fd_count) )
+      {
+        fprintf (stderr, "Unexpected select() error: %d. Line: %d\n",
+                 (int) WSAGetLastError (), __LINE__);
+        fflush (stderr);
+        exit (99);
+      }
+      Sleep (1);
 #endif
     }
     curl_multi_perform (multi, &running);
diff --git a/src/testcurl/test_get_wait.c b/src/testcurl/test_get_wait.c
index cfabd2d1..0fc190f9 100644
--- a/src/testcurl/test_get_wait.c
+++ b/src/testcurl/test_get_wait.c
@@ -1,7 +1,7 @@
 /*
      This file is part of libmicrohttpd
      Copyright (C) 2007, 2009, 2011 Christian Grothoff
-     Copyright (C) 2016-2021 Karlson2k (Evgeny Grin)
+     Copyright (C) 2014-2021 Evgeny Grin (Karlson2k)
 
      libmicrohttpd is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
diff --git a/src/testcurl/test_iplimit.c b/src/testcurl/test_iplimit.c
index 405f2777..f93c5030 100644
--- a/src/testcurl/test_iplimit.c
+++ b/src/testcurl/test_iplimit.c
@@ -1,6 +1,7 @@
 /*
      This file is part of libmicrohttpd
      Copyright (C) 2007 Christian Grothoff
+     Copyright (C) 2014-2021 Evgeny Grin (Karlson2k)
 
      libmicrohttpd is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -20,9 +21,9 @@
 
 /**
  * @file test_iplimit.c
- * @brief  Testcase for libmicrohttpd GET operations
- *         TODO: test parsing of query
+ * @brief  Testcase for libmicrohttpd limits per IP
  * @author Christian Grothoff
+ * @author Karlson2k (Evgeny Grin)
  */
 
 #include "MHD_config.h"
diff --git a/src/testcurl/test_large_put.c b/src/testcurl/test_large_put.c
index 1aa8a457..66c51588 100644
--- a/src/testcurl/test_large_put.c
+++ b/src/testcurl/test_large_put.c
@@ -1,6 +1,7 @@
 /*
      This file is part of libmicrohttpd
      Copyright (C) 2007, 2008 Christian Grothoff
+     Copyright (C) 2014-2021 Evgeny Grin (Karlson2k)
 
      libmicrohttpd is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -22,6 +23,7 @@
  * @file test_large_put.c
  * @brief  Testcase for libmicrohttpd PUT operations
  * @author Christian Grothoff
+ * @author Karlson2k (Evgeny Grin)
  */
 
 #include "MHD_config.h"
@@ -565,14 +567,22 @@ testPutExternal (void)
     {
 #ifdef MHD_POSIX_SOCKETS
       if (EINTR != errno)
-        abort ();
+      {
+        fprintf (stderr, "Unexpected select() error: %d. Line: %d\n",
+                 (int) errno, __LINE__);
+        fflush (stderr);
+        exit (99);
+      }
 #else
-      if ((WSAEINVAL != WSAGetLastError ()) || (0 != rs.fd_count) || (0 !=
-                                                                      ws.
-                                                                      fd_count)
-          || (0 != es.fd_count) )
-        abort ();
-      Sleep (1000);
+      if ((WSAEINVAL != WSAGetLastError ()) ||
+          (0 != rs.fd_count) || (0 != ws.fd_count) || (0 != es.fd_count) )
+      {
+        fprintf (stderr, "Unexpected select() error: %d. Line: %d\n",
+                 (int) WSAGetLastError (), __LINE__);
+        fflush (stderr);
+        exit (99);
+      }
+      Sleep (1);
 #endif
     }
     curl_multi_perform (multi, &running);
diff --git a/src/testcurl/test_long_header.c b/src/testcurl/test_long_header.c
index b9802fc5..884df6c9 100644
--- a/src/testcurl/test_long_header.c
+++ b/src/testcurl/test_long_header.c
@@ -1,6 +1,7 @@
 /*
      This file is part of libmicrohttpd
      Copyright (C) 2007 Christian Grothoff
+     Copyright (C) 2016-2021 Evgeny Grin (Karlson2k)
 
      libmicrohttpd is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -22,6 +23,7 @@
  * @file test_long_header.c
  * @brief  Testcase for libmicrohttpd handling of very long headers
  * @author Christian Grothoff
+ * @author Karlson2k (Evgeny Grin)
  */
 
 #include "MHD_config.h"
diff --git a/src/testcurl/test_parse_cookies.c 
b/src/testcurl/test_parse_cookies.c
index 4356bf8c..a78e0afa 100644
--- a/src/testcurl/test_parse_cookies.c
+++ b/src/testcurl/test_parse_cookies.c
@@ -1,6 +1,7 @@
 /*
      This file is part of libmicrohttpd
      Copyright (C) 2007 Christian Grothoff
+     Copyright (C) 2014-2021 Evgeny Grin (Karlson2k)
 
      libmicrohttpd is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -22,6 +23,7 @@
  * @file test_parse_cookies.c
  * @brief  Testcase for HTTP cookie parsing
  * @author Christian Grothoff
+ * @author Karlson2k (Evgeny Grin)
  */
 
 #include "MHD_config.h"
@@ -228,14 +230,22 @@ testExternalGet ()
     {
 #ifdef MHD_POSIX_SOCKETS
       if (EINTR != errno)
-        abort ();
+      {
+        fprintf (stderr, "Unexpected select() error: %d. Line: %d\n",
+                 (int) errno, __LINE__);
+        fflush (stderr);
+        exit (99);
+      }
 #else
-      if ((WSAEINVAL != WSAGetLastError ()) || (0 != rs.fd_count) || (0 !=
-                                                                      ws.
-                                                                      fd_count)
-          || (0 != es.fd_count) )
-        abort ();
-      Sleep (1000);
+      if ((WSAEINVAL != WSAGetLastError ()) ||
+          (0 != rs.fd_count) || (0 != ws.fd_count) || (0 != es.fd_count) )
+      {
+        fprintf (stderr, "Unexpected select() error: %d. Line: %d\n",
+                 (int) WSAGetLastError (), __LINE__);
+        fflush (stderr);
+        exit (99);
+      }
+      Sleep (1);
 #endif
     }
     curl_multi_perform (multi, &running);
diff --git a/src/testcurl/test_patch.c b/src/testcurl/test_patch.c
index eb1fc707..85bec751 100644
--- a/src/testcurl/test_patch.c
+++ b/src/testcurl/test_patch.c
@@ -1,6 +1,7 @@
 /*
      This file is part of libmicrohttpd
      Copyright (C) 2020 Christian Grothoff
+     Copyright (C) 2016-2021 Evgeny Grin (Karlson2k)
 
      libmicrohttpd is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -22,6 +23,7 @@
  * @file test_patch.c
  * @brief  Testcase for libmicrohttpd PATCH operations
  * @author Christian Grothoff
+ * @author Karlson2k (Evgeny Grin)
  */
 
 #include "MHD_config.h"
@@ -439,14 +441,22 @@ testExternalPut ()
     {
 #ifdef MHD_POSIX_SOCKETS
       if (EINTR != errno)
-        abort ();
+      {
+        fprintf (stderr, "Unexpected select() error: %d. Line: %d\n",
+                 (int) errno, __LINE__);
+        fflush (stderr);
+        exit (99);
+      }
 #else
-      if ((WSAEINVAL != WSAGetLastError ()) || (0 != rs.fd_count) || (0 !=
-                                                                      ws.
-                                                                      fd_count)
-          || (0 != es.fd_count) )
-        _exit (99);
-      Sleep (1000);
+      if ((WSAEINVAL != WSAGetLastError ()) ||
+          (0 != rs.fd_count) || (0 != ws.fd_count) || (0 != es.fd_count) )
+      {
+        fprintf (stderr, "Unexpected select() error: %d. Line: %d\n",
+                 (int) WSAGetLastError (), __LINE__);
+        fflush (stderr);
+        exit (99);
+      }
+      Sleep (1);
 #endif
     }
     curl_multi_perform (multi, &running);
diff --git a/src/testcurl/test_post.c b/src/testcurl/test_post.c
index 2e34c38f..e5420fde 100644
--- a/src/testcurl/test_post.c
+++ b/src/testcurl/test_post.c
@@ -1,6 +1,7 @@
 /*
      This file is part of libmicrohttpd
      Copyright (C) 2007 Christian Grothoff
+     Copyright (C) 2014-2021 Evgeny Grin (Karlson2k)
 
      libmicrohttpd is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -22,6 +23,7 @@
  * @file test_post.c
  * @brief  Testcase for libmicrohttpd POST operations using URL-encoding
  * @author Christian Grothoff
+ * @author Karlson2k (Evgeny Grin)
  */
 
 #include "MHD_config.h"
@@ -515,14 +517,22 @@ testExternalPost ()
     {
 #ifdef MHD_POSIX_SOCKETS
       if (EINTR != errno)
-        abort ();
+      {
+        fprintf (stderr, "Unexpected select() error: %d. Line: %d\n",
+                 (int) errno, __LINE__);
+        fflush (stderr);
+        exit (99);
+      }
 #else
-      if ((WSAEINVAL != WSAGetLastError ()) || (0 != rs.fd_count) || (0 !=
-                                                                      ws.
-                                                                      fd_count)
-          || (0 != es.fd_count) )
-        abort ();
-      Sleep (1000);
+      if ((WSAEINVAL != WSAGetLastError ()) ||
+          (0 != rs.fd_count) || (0 != ws.fd_count) || (0 != es.fd_count) )
+      {
+        fprintf (stderr, "Unexpected select() error: %d. Line: %d\n",
+                 (int) WSAGetLastError (), __LINE__);
+        fflush (stderr);
+        exit (99);
+      }
+      Sleep (1);
 #endif
     }
     curl_multi_perform (multi, &running);
diff --git a/src/testcurl/test_post_loop.c b/src/testcurl/test_post_loop.c
index 0c8bf202..927c867b 100644
--- a/src/testcurl/test_post_loop.c
+++ b/src/testcurl/test_post_loop.c
@@ -1,6 +1,7 @@
 /*
      This file is part of libmicrohttpd
      Copyright (C) 2007 Christian Grothoff
+     Copyright (C) 2014-2021 Evgeny Grin (Karlson2k)
 
      libmicrohttpd is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -22,6 +23,7 @@
  * @file daemontest_post_loop.c
  * @brief  Testcase for libmicrohttpd POST operations using URL-encoding
  * @author Christian Grothoff (inspired by bug report #1296)
+ * @author Karlson2k (Evgeny Grin)
  */
 
 #include "MHD_config.h"
@@ -525,12 +527,25 @@ testExternalPost ()
       tv.tv_usec = (timeout % 1000) * 1000;
       if (-1 == select (maxposixs + 1, &rs, &ws, &es, &tv))
       {
-        if (EINTR == errno)
-          continue;
-        fprintf (stderr,
-                 "select failed: %s\n",
-                 strerror (errno));
-        break;
+#ifdef MHD_POSIX_SOCKETS
+        if (EINTR != errno)
+        {
+          fprintf (stderr, "Unexpected select() error: %d. Line: %d\n",
+                   (int) errno, __LINE__);
+          fflush (stderr);
+          exit (99);
+        }
+#else
+        if ((WSAEINVAL != WSAGetLastError ()) ||
+            (0 != rs.fd_count) || (0 != ws.fd_count) || (0 != es.fd_count) )
+        {
+          fprintf (stderr, "Unexpected select() error: %d. Line: %d\n",
+                   (int) WSAGetLastError (), __LINE__);
+          fflush (stderr);
+          exit (99);
+        }
+        Sleep (1);
+#endif
       }
       while (CURLM_CALL_MULTI_PERFORM ==
              curl_multi_perform (multi, &running))
diff --git a/src/testcurl/test_postform.c b/src/testcurl/test_postform.c
index 57d6b4bf..beb23f43 100644
--- a/src/testcurl/test_postform.c
+++ b/src/testcurl/test_postform.c
@@ -1,6 +1,7 @@
 /*
      This file is part of libmicrohttpd
      Copyright (C) 2007 Christian Grothoff
+     Copyright (C) 2014-2021 Evgeny Grin (Karlson2k)
 
      libmicrohttpd is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -22,6 +23,7 @@
  * @file test_postform.c
  * @brief  Testcase for libmicrohttpd POST operations using multipart/postform 
data
  * @author Christian Grothoff
+ * @author Karlson2k (Evgeny Grin)
  */
 
 #include "MHD_config.h"
@@ -540,14 +542,22 @@ testExternalPost ()
     {
 #ifdef MHD_POSIX_SOCKETS
       if (EINTR != errno)
-        abort ();
+      {
+        fprintf (stderr, "Unexpected select() error: %d. Line: %d\n",
+                 (int) errno, __LINE__);
+        fflush (stderr);
+        exit (99);
+      }
 #else
-      if ((WSAEINVAL != WSAGetLastError ()) || (0 != rs.fd_count) || (0 !=
-                                                                      ws.
-                                                                      fd_count)
-          || (0 != es.fd_count) )
-        abort ();
-      Sleep (1000);
+      if ((WSAEINVAL != WSAGetLastError ()) ||
+          (0 != rs.fd_count) || (0 != ws.fd_count) || (0 != es.fd_count) )
+      {
+        fprintf (stderr, "Unexpected select() error: %d. Line: %d\n",
+                 (int) WSAGetLastError (), __LINE__);
+        fflush (stderr);
+        exit (99);
+      }
+      Sleep (1);
 #endif
     }
     curl_multi_perform (multi, &running);
diff --git a/src/testcurl/test_process_arguments.c 
b/src/testcurl/test_process_arguments.c
index 96a46e1d..a7aecf88 100644
--- a/src/testcurl/test_process_arguments.c
+++ b/src/testcurl/test_process_arguments.c
@@ -1,6 +1,7 @@
 /*
      This file is part of libmicrohttpd
      Copyright (C) 2007, 2013 Christian Grothoff
+     Copyright (C) 2014-2021 Evgeny Grin (Karlson2k)
 
      libmicrohttpd is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -22,6 +23,7 @@
  * @file test_process_arguments.c
  * @brief  Testcase for HTTP URI arguments
  * @author Christian Grothoff
+ * @author Karlson2k (Evgeny Grin)
  */
 
 #include "MHD_config.h"
@@ -227,14 +229,22 @@ testExternalGet ()
     {
 #ifdef MHD_POSIX_SOCKETS
       if (EINTR != errno)
-        abort ();
+      {
+        fprintf (stderr, "Unexpected select() error: %d. Line: %d\n",
+                 (int) errno, __LINE__);
+        fflush (stderr);
+        exit (99);
+      }
 #else
-      if ((WSAEINVAL != WSAGetLastError ()) || (0 != rs.fd_count) || (0 !=
-                                                                      ws.
-                                                                      fd_count)
-          || (0 != es.fd_count) )
-        abort ();
-      Sleep (1000);
+      if ((WSAEINVAL != WSAGetLastError ()) ||
+          (0 != rs.fd_count) || (0 != ws.fd_count) || (0 != es.fd_count) )
+      {
+        fprintf (stderr, "Unexpected select() error: %d. Line: %d\n",
+                 (int) WSAGetLastError (), __LINE__);
+        fflush (stderr);
+        exit (99);
+      }
+      Sleep (1);
 #endif
     }
     curl_multi_perform (multi, &running);
diff --git a/src/testcurl/test_process_headers.c 
b/src/testcurl/test_process_headers.c
index b0826b3d..e7e8897e 100644
--- a/src/testcurl/test_process_headers.c
+++ b/src/testcurl/test_process_headers.c
@@ -1,6 +1,7 @@
 /*
      This file is part of libmicrohttpd
      Copyright (C) 2007 Christian Grothoff
+     Copyright (C) 2014-2021 Evgeny Grin (Karlson2k)
 
      libmicrohttpd is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -22,6 +23,7 @@
  * @file test_process_headers.c
  * @brief  Testcase for HTTP header access
  * @author Christian Grothoff
+ * @author Karlson2k (Evgeny Grin)
  */
 
 #include "MHD_config.h"
@@ -483,14 +485,22 @@ testExternalGet ()
     {
 #ifdef MHD_POSIX_SOCKETS
       if (EINTR != errno)
-        abort ();
+      {
+        fprintf (stderr, "Unexpected select() error: %d. Line: %d\n",
+                 (int) errno, __LINE__);
+        fflush (stderr);
+        exit (99);
+      }
 #else
-      if ((WSAEINVAL != WSAGetLastError ()) || (0 != rs.fd_count) || (0 !=
-                                                                      ws.
-                                                                      fd_count)
-          || (0 != es.fd_count) )
-        abort ();
-      Sleep (1000);
+      if ((WSAEINVAL != WSAGetLastError ()) ||
+          (0 != rs.fd_count) || (0 != ws.fd_count) || (0 != es.fd_count) )
+      {
+        fprintf (stderr, "Unexpected select() error: %d. Line: %d\n",
+                 (int) WSAGetLastError (), __LINE__);
+        fflush (stderr);
+        exit (99);
+      }
+      Sleep (1);
 #endif
     }
     curl_multi_perform (multi, &running);
diff --git a/src/testcurl/test_put.c b/src/testcurl/test_put.c
index 2012b7fd..0612c65b 100644
--- a/src/testcurl/test_put.c
+++ b/src/testcurl/test_put.c
@@ -1,6 +1,7 @@
 /*
      This file is part of libmicrohttpd
      Copyright (C) 2007 Christian Grothoff
+     Copyright (C) 2014-2021 Evgeny Grin (Karlson2k)
 
      libmicrohttpd is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -22,6 +23,7 @@
  * @file daemontest_put.c
  * @brief  Testcase for libmicrohttpd PUT operations
  * @author Christian Grothoff
+ * @author Karlson2k (Evgeny Grin)
  */
 
 #include "MHD_config.h"
@@ -483,14 +485,22 @@ testExternalPut ()
     {
 #ifdef MHD_POSIX_SOCKETS
       if (EINTR != errno)
-        abort ();
+      {
+        fprintf (stderr, "Unexpected select() error: %d. Line: %d\n",
+                 (int) errno, __LINE__);
+        fflush (stderr);
+        exit (99);
+      }
 #else
-      if ((WSAEINVAL != WSAGetLastError ()) || (0 != rs.fd_count) || (0 !=
-                                                                      ws.
-                                                                      fd_count)
-          || (0 != es.fd_count) )
-        _exit (99);
-      Sleep (1000);
+      if ((WSAEINVAL != WSAGetLastError ()) ||
+          (0 != rs.fd_count) || (0 != ws.fd_count) || (0 != es.fd_count) )
+      {
+        fprintf (stderr, "Unexpected select() error: %d. Line: %d\n",
+                 (int) WSAGetLastError (), __LINE__);
+        fflush (stderr);
+        exit (99);
+      }
+      Sleep (1);
 #endif
     }
     curl_multi_perform (multi, &running);
diff --git a/src/testcurl/test_put_chunked.c b/src/testcurl/test_put_chunked.c
index 2c24130e..a1dee9cf 100644
--- a/src/testcurl/test_put_chunked.c
+++ b/src/testcurl/test_put_chunked.c
@@ -1,6 +1,7 @@
 /*
      This file is part of libmicrohttpd
      Copyright (C) 2007 Christian Grothoff
+     Copyright (C) 2014-2021 Evgeny Grin (Karlson2k)
 
      libmicrohttpd is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -23,6 +24,7 @@
  * @brief Testcase for libmicrohttpd PUT operations with chunked encoding
  *        for the upload data
  * @author Christian Grothoff
+ * @author Karlson2k (Evgeny Grin)
  */
 
 #include "MHD_config.h"
@@ -478,14 +480,22 @@ testExternalPut ()
     {
 #ifdef MHD_POSIX_SOCKETS
       if (EINTR != errno)
-        abort ();
+      {
+        fprintf (stderr, "Unexpected select() error: %d. Line: %d\n",
+                 (int) errno, __LINE__);
+        fflush (stderr);
+        exit (99);
+      }
 #else
-      if ((WSAEINVAL != WSAGetLastError ()) || (0 != rs.fd_count) || (0 !=
-                                                                      ws.
-                                                                      fd_count)
-          || (0 != es.fd_count) )
-        abort ();
-      Sleep (1000);
+      if ((WSAEINVAL != WSAGetLastError ()) ||
+          (0 != rs.fd_count) || (0 != ws.fd_count) || (0 != es.fd_count) )
+      {
+        fprintf (stderr, "Unexpected select() error: %d. Line: %d\n",
+                 (int) WSAGetLastError (), __LINE__);
+        fflush (stderr);
+        exit (99);
+      }
+      Sleep (1);
 #endif
     }
     curl_multi_perform (multi, &running);
diff --git a/src/testcurl/test_quiesce.c b/src/testcurl/test_quiesce.c
index 4482cde4..b78b3f4a 100644
--- a/src/testcurl/test_quiesce.c
+++ b/src/testcurl/test_quiesce.c
@@ -1,6 +1,7 @@
 /*
      This file is part of libmicrohttpd
      Copyright (C) 2013, 2015 Christian Grothoff
+     Copyright (C) 2014-2021 Evgeny Grin (Karlson2k)
 
      libmicrohttpd is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -21,6 +22,7 @@
  * @file test_quiesce.c
  * @brief  Testcase for libmicrohttpd quiescing
  * @author Christian Grothoff
+ * @author Karlson2k (Evgeny Grin)
  */
 
 #include "MHD_config.h"
@@ -454,17 +456,25 @@ testExternalGet ()
       tv.tv_usec = 1000;
       if (-1 == select (maxposixs + 1, &rs, &ws, &es, &tv))
       {
-#ifdef MHD_POSIX_SOCKETS
+  #ifdef MHD_POSIX_SOCKETS
         if (EINTR != errno)
-          abort ();
-#else
-        if ((WSAEINVAL != WSAGetLastError ()) || (0 != rs.fd_count) || (0 !=
-                                                                        ws.
-                                                                        
fd_count)
-            || (0 != es.fd_count) )
-          abort ();
-        Sleep (1000);
-#endif
+        {
+          fprintf (stderr, "Unexpected select() error: %d. Line: %d\n",
+                   (int) errno, __LINE__);
+          fflush (stderr);
+          exit (99);
+        }
+  #else
+        if ((WSAEINVAL != WSAGetLastError ()) ||
+            (0 != rs.fd_count) || (0 != ws.fd_count) || (0 != es.fd_count) )
+        {
+          fprintf (stderr, "Unexpected select() error: %d. Line: %d\n",
+                   (int) WSAGetLastError (), __LINE__);
+          fflush (stderr);
+          exit (99);
+        }
+        Sleep (1);
+  #endif
       }
       curl_multi_perform (multi, &running);
       if (0 == running)
diff --git a/src/testcurl/test_quiesce_stream.c 
b/src/testcurl/test_quiesce_stream.c
index c9336f2c..96a4a973 100644
--- a/src/testcurl/test_quiesce_stream.c
+++ b/src/testcurl/test_quiesce_stream.c
@@ -1,6 +1,7 @@
 /*
      This file is part of libmicrohttpd
      Copyright (C) 2016 Christian Grothoff
+     Copyright (C) 2016-2021 Evgeny Grin (Karlson2k)
 
      libmicrohttpd is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
diff --git a/src/testcurl/test_termination.c b/src/testcurl/test_termination.c
index e32d3322..3e1c1f91 100644
--- a/src/testcurl/test_termination.c
+++ b/src/testcurl/test_termination.c
@@ -1,6 +1,7 @@
 /*
      This file is part of libmicrohttpd
      Copyright (C) 2009 Christian Grothoff
+     Copyright (C) 2014-2021 Evgeny Grin (Karlson2k)
 
      libmicrohttpd is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -22,6 +23,7 @@
  * @file daemontest_termination.c
  * @brief  Testcase for libmicrohttpd tolerating client not closing immediately
  * @author hollosig
+ * @author Karlson2k (Evgeny Grin)
  */
 
 #include "platform.h"
diff --git a/src/testcurl/test_timeout.c b/src/testcurl/test_timeout.c
index 018195f4..8fae1745 100644
--- a/src/testcurl/test_timeout.c
+++ b/src/testcurl/test_timeout.c
@@ -1,6 +1,7 @@
 /*
      This file is part of libmicrohttpd
      Copyright (C) 2007 Christian Grothoff
+     Copyright (C) 2016-2019 Evgeny Grin (Karlson2k)
 
      libmicrohttpd is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -22,6 +23,7 @@
  * @file test_timeout.c
  * @brief  Testcase for libmicrohttpd PUT operations
  * @author Matthias Wachs
+ * @author Karlson2k (Evgeny Grin)
  */
 
 #include "MHD_config.h"
diff --git a/src/testcurl/test_urlparse.c b/src/testcurl/test_urlparse.c
index d089ab22..2550227f 100644
--- a/src/testcurl/test_urlparse.c
+++ b/src/testcurl/test_urlparse.c
@@ -1,6 +1,7 @@
 /*
      This file is part of libmicrohttpd
      Copyright (C) 2007, 2009, 2011 Christian Grothoff
+     Copyright (C) 2014-2019 Evgeny Grin (Karlson2k)
 
      libmicrohttpd is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -22,6 +23,7 @@
  * @file daemontest_urlparse.c
  * @brief  Testcase for libmicrohttpd url parsing
  * @author Christian Grothoff
+ * @author Karlson2k (Evgeny Grin)
  */
 
 #include "MHD_config.h"

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

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