[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[libmicrohttpd] 07/13: get_timeout_millisec_(): refactoring for readabil
From: |
gnunet |
Subject: |
[libmicrohttpd] 07/13: get_timeout_millisec_(): refactoring for readability |
Date: |
Wed, 27 Apr 2022 21:25:15 +0200 |
This is an automated email from the git hooks/post-receive script.
karlson2k pushed a commit to branch master
in repository libmicrohttpd.
commit d77c8b429a1e017592f1e53a28d5c2509164c3ce
Author: Evgeny Grin (Karlson2k) <k2k@narod.ru>
AuthorDate: Wed Apr 27 15:59:07 2022 +0300
get_timeout_millisec_(): refactoring for readability
---
configure.ac | 1 +
src/microhttpd/daemon.c | 49 +++++++++++++++++++++++++++++++++++++++----------
2 files changed, 40 insertions(+), 10 deletions(-)
diff --git a/configure.ac b/configure.ac
index a6af4004..a500efe7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1437,6 +1437,7 @@ struct timeval test_var;
)
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([int64_t], [], [[#include <stdint.h>]])
AC_CHECK_SIZEOF([uint64_t], [], [[#include <stdint.h>]])
AC_CHECK_SIZEOF([int], [], [[#include <stdint.h>]])
AC_CHECK_SIZEOF([unsigned int], [], [[#include <stdint.h>]])
diff --git a/src/microhttpd/daemon.c b/src/microhttpd/daemon.c
index 98999491..dec72581 100644
--- a/src/microhttpd/daemon.c
+++ b/src/microhttpd/daemon.c
@@ -4048,22 +4048,51 @@ MHD_get_timeout64 (struct MHD_Daemon *daemon,
* ignored if set to '-1'
* @return timeout value in milliseconds or -1 if no timeout is expected.
*/
-static int
+static int64_t
get_timeout_millisec_ (struct MHD_Daemon *daemon,
int32_t max_timeout)
{
- MHD_UNSIGNED_LONG_LONG ulltimeout;
+ uint64_t d_timeout;
+ mhd_assert (0 <= max_timeout || -1 == max_timeout);
if (0 == max_timeout)
return 0;
- if (MHD_NO == MHD_get_timeout (daemon, &ulltimeout))
- return (INT_MAX < max_timeout) ? INT_MAX : (int) max_timeout;
+ if (MHD_NO == MHD_get_timeout64 (daemon, &d_timeout))
+ return max_timeout;
+
+ if ((0 < max_timeout) && ((uint64_t) max_timeout < d_timeout))
+ return max_timeout;
+
+ if (INT64_MAX < d_timeout)
+ return INT64_MAX;
+
+ return (int64_t) d_timeout;
+}
- if ( (0 > max_timeout) ||
- ((uint32_t) max_timeout > ulltimeout) )
- return (INT_MAX < ulltimeout) ? INT_MAX : (int) ulltimeout;
- return (INT_MAX < max_timeout) ? INT_MAX : (int) max_timeout;
+/**
+ * Obtain timeout value for polling function for this daemon.
+ * @remark To be called only from the thread that processes
+ * daemon's select()/poll()/etc.
+ *
+ * @param daemon the daemon to query for timeout
+ * @param max_timeout the maximum return value (in milliseconds),
+ * ignored if set to '-1'
+ * @return timeout value in milliseconds, capped to INT_MAX, or
+ * -1 if no timeout is expected.
+ */
+static int
+get_timeout_millisec_int (struct MHD_Daemon *daemon,
+ int32_t max_timeout)
+{
+ int64_t res;
+
+ res = get_timeout_millisec_ (daemon, max_timeout);
+#if SIZEOF_INT < SIZEOF_INT64_T
+ if (INT_MAX <= res)
+ return INT_MAX;
+#endif /* SIZEOF_INT < SIZEOF_INT64_T */
+ return (int) res;
}
@@ -4505,7 +4534,7 @@ MHD_poll_all (struct MHD_Daemon *daemon,
poll_server++;
}
- timeout = get_timeout_millisec_ (daemon, millisec);
+ timeout = get_timeout_millisec_int (daemon, millisec);
i = 0;
for (pos = daemon->connections_tail; NULL != pos; pos = pos->prev)
@@ -5047,7 +5076,7 @@ MHD_epoll (struct MHD_Daemon *daemon,
(MHD_NO != resume_suspended_connections (daemon)) )
millisec = 0;
- timeout_ms = get_timeout_millisec_ (daemon, millisec);
+ timeout_ms = get_timeout_millisec_int (daemon, millisec);
/* Reset. New value will be set when connections are processed. */
/* Note: Used mostly for uniformity here as same situation is
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
- [libmicrohttpd] branch master updated (54e12358 -> d14fc3b3), gnunet, 2022/04/27
- [libmicrohttpd] 04/13: thread-per-connection: do not cache connection timeout, gnunet, 2022/04/27
- [libmicrohttpd] 03/13: Response from callback: do allow negative return amounts, except predefined values, gnunet, 2022/04/27
- [libmicrohttpd] 01/13: MHD_itc_clear_(): simplified eventfd version, gnunet, 2022/04/27
- [libmicrohttpd] 08/13: Added new function MHD_get_timeout64s(), gnunet, 2022/04/27
- [libmicrohttpd] 02/13: Fixed compiler warnings of implicit casting, which could change the value, gnunet, 2022/04/27
- [libmicrohttpd] 06/13: Added new function MHD_get_timeout64(), gnunet, 2022/04/27
- [libmicrohttpd] 09/13: daemon: added workaround for 'uncrustify' broken formatting, gnunet, 2022/04/27
- [libmicrohttpd] 07/13: get_timeout_millisec_(): refactoring for readability,
gnunet <=
- [libmicrohttpd] 05/13: thread-per-connection: improved timeout handling for 'poll()' mode, fixed short busy-waiting, gnunet, 2022/04/27
- [libmicrohttpd] 10/13: Use new function MHD_get_timeout64() in MHD code, gnunet, 2022/04/27
- [libmicrohttpd] 11/13: mhd_send: added safe default value if sysconf() is broken, gnunet, 2022/04/27
- [libmicrohttpd] 12/13: Fixes related to implicit cast warnings, gnunet, 2022/04/27
- [libmicrohttpd] 13/13: MHD_get_timeout*(): improved doxy, gnunet, 2022/04/27