gnunet-svn
[Top][All Lists]
Advanced

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

[libmicrohttpd] 01/02: Fixed preprocessor error, fixed timeout calculati


From: gnunet
Subject: [libmicrohttpd] 01/02: Fixed preprocessor error, fixed timeout calculation with 64 bit time_t introduced by e42ec8f54d28c982307367c483cee34ade5c54f8
Date: Wed, 01 Sep 2021 19:54:47 +0200

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

grothoff pushed a commit to branch master
in repository libmicrohttpd.

commit b6f083d884729d095b6e9a8c11e5cee93267746b
Author: Evgeny Grin (Karlson2k) <k2k@narod.ru>
AuthorDate: Wed Sep 1 19:16:21 2021 +0300

    Fixed preprocessor error, fixed timeout calculation
    with 64 bit time_t introduced by e42ec8f54d28c982307367c483cee34ade5c54f8
---
 configure.ac            | 31 +++++++++++++++++++++++++++++++
 src/microhttpd/daemon.c | 16 +++++++++++++---
 2 files changed, 44 insertions(+), 3 deletions(-)

diff --git a/configure.ac b/configure.ac
index b73f3cc3..6589b2d7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1072,6 +1072,37 @@ AC_CHECK_HEADER([[search.h]],
 
 AM_CONDITIONAL([MHD_HAVE_TSEARCH], [[test "x$ac_cv_header_search_h" = xyes && 
test "x$HAVE_TSEARCH" = "x1" && test "x$REPLACE_TSEARCH" != "x1"]])
 
+# Check for types sizes
+AC_CACHE_CHECK([size of tv_sec member of struct timeval], 
[mhd_cv_size_timeval_tv_sec],
+  [
+    AC_COMPUTE_INT([mhd_cv_size_timeval_tv_sec], [((long 
int)sizeof(test_var.tv_sec))],
+      [[
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif /* HAVE_SYS_TIME_H */
+#ifdef HAVE_TIME_H
+#include <time.h>
+#endif /* HAVE_TIME_H */
+#if HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif /* HAVE_SYS_TYPES_H */
+static struct timeval test_var;
+      ]],
+      [
+        # The size is used only to exclude additional checks/comparision in 
code
+        # to avoid compiler warnings. With larger size MHD code will use
+        # additional checks which ensure that value will fit but it may produce
+        # a harmless compiler warning.
+        AC_MSG_WARN([The size cannot be determined, assuming 8.])
+        mhd_cv_size_timeval_tv_sec=8
+      ]
+    )
+  ]
+)
+AC_DEFINE_UNQUOTED([SIZEOF_STRUCT_TIMEVAL_TV_SEC], 
[$mhd_cv_size_timeval_tv_sec],
+  [The size of `tv_sec' member of `struct timeval', as computed by sizeof])
+AC_CHECK_SIZEOF([uint64_t], [], [[#include <stdint.h>]])
+
 AC_CHECK_HEADERS([dlfcn.h],[have_tlsplugin=yes],[have_tlsplugin=no], 
[AC_INCLUDES_DEFAULT])
 AM_CONDITIONAL([MHD_HAVE_TLS_PLUGIN], [[test "x$have_tlsplugin" = xyes]])
 
diff --git a/src/microhttpd/daemon.c b/src/microhttpd/daemon.c
index 090d39d4..bec6d8d8 100644
--- a/src/microhttpd/daemon.c
+++ b/src/microhttpd/daemon.c
@@ -2008,12 +2008,13 @@ thread_main_handle_connection (void *data)
       else
       {
         const uint64_t mseconds_left = timeout - since_actv;
-#if UINT64_MAX != TIMEVAL_TV_SEC_MAX
+#if (SIZEOF_UINT64_T - 1) >= SIZEOF_STRUCT_TIMEVAL_TV_SEC
         if (mseconds_left / 1000 > TIMEVAL_TV_SEC_MAX)
           tv.tv_sec = TIMEVAL_TV_SEC_MAX;
         else
-          tv.tv_sec = (_MHD_TIMEVAL_TV_SEC_TYPE) mseconds_left / 1000;
-#endif /* UINT64_MAX != TIMEVAL_TV_SEC_MAX */
+#endif /* (SIZEOF_UINT64_T - 1) >= SIZEOF_STRUCT_TIMEVAL_TV_SEC */
+        tv.tv_sec = (_MHD_TIMEVAL_TV_SEC_TYPE) mseconds_left / 1000;
+
         tv.tv_usec = (mseconds_left % 1000) * 1000;
       }
       tvp = &tv;
@@ -8143,6 +8144,15 @@ MHD_init (void)
   MHD_monotonic_sec_counter_init ();
   MHD_send_init_static_vars_ ();
   MHD_init_mem_pools_ ();
+  /* Check whether sizes were correctly detected by configure */
+#ifdef _DEBUG
+  if (1)
+  {
+    struct timeval tv;
+    mhd_assert (sizeof(tv.tv_sec) == SIZEOF_STRUCT_TIMEVAL_TV_SEC);
+  }
+#endif /* _DEBUG */
+  mhd_assert (sizeof(uint64_t) == SIZEOF_UINT64_T);
 }
 
 

-- 
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]