mirror of
https://git.freebsd.org/ports.git
synced 2025-06-08 14:20:33 -04:00
- login_disabled option before starttls for pop3 - fix compiler warnings for GCC5 - Fix IMAP mailbox maintanence - prevent assertion in p_string_erase - improve crypt authentication, also don't segfault when spasswd is empty - simplify log_query_time duration logic - Disconnect IMAP clients if only few free FDs left - Add primary key constraint to dbmail_authlog - Rework temporary connection failures - Give sensible default for retry 120s - Add retries for binding and searching - Bump search timeout to 60s - Increase ldap timeout to 600s 10 mins - Refactor deprecated functions - Get timeout from config - Remove redundant event_assign - Remove deprecated non functioning g_mem_profile - Add definition for authldap_free - Revert inadvertent event_assign removal - Reduce failed LDAP connection for search to error - Update LDAP to non deprecated search - Clear the ldap connection - Update ldap deprecated unbind - Fix typo - Update to ldap_unbind_ext_s and remove redundant sigaction - Rebalance commit rollback - Ensure mailbox2dbmail is using Python 2 - Tidy mailbox2dbmail man page - Update description of pid file location in server man page - Boundaries fixups ordering of parts do not add newline on - Prepend headers during delivery - Allow for systems that don't use proc PR: 210274 Submitted by: fluffy
119 lines
3.8 KiB
Text
119 lines
3.8 KiB
Text
From f5b73b342b4a6cae1bb15340e5da7330e29319c1 Mon Sep 17 00:00:00 2001
|
|
From: Paul J Stevens <p.stevens@lukkien.com>
|
|
Date: Sat, 5 Mar 2016 18:43:12 +0100
|
|
Subject: [PATCH 06/33] simplify log_query_time duration logic
|
|
|
|
---
|
|
src/dm_db.c | 16 ++++++++--------
|
|
src/dm_misc.c | 12 ++++++++++++
|
|
src/dm_misc.h | 2 ++
|
|
test/check_dbmail_db.c | 27 +++++++++++++++++++++++++++
|
|
4 files changed, 49 insertions(+), 8 deletions(-)
|
|
|
|
diff --git src/dm_db.c src/dm_db.c
|
|
index bfe9601..429d0ae 100644
|
|
--- src/dm_db.c
|
|
+++ src/dm_db.c
|
|
@@ -354,14 +354,14 @@ void db_con_clear(Connection_T c)
|
|
|
|
void log_query_time(char *query, struct timeval before, struct timeval after)
|
|
{
|
|
- double elapsed = ((double)after.tv_sec + ((double)after.tv_usec / 1000000)) - ((double)before.tv_sec + ((double)before.tv_usec / 1000000));
|
|
- TRACE(TRACE_DATABASE, "last query took [%.3f] seconds", elapsed);
|
|
- if (elapsed > (double)db_params.query_time_warning)
|
|
- TRACE(TRACE_WARNING, "slow query [%s] took [%.3f] seconds", query, elapsed);
|
|
- else if (elapsed > (double)db_params.query_time_notice)
|
|
- TRACE(TRACE_NOTICE, "slow query [%s] took [%.3f] seconds", query, elapsed);
|
|
- else if (elapsed > (double)db_params.query_time_info)
|
|
- TRACE(TRACE_INFO, "slow query [%s] took [%.3f] seconds", query, elapsed);
|
|
+ unsigned int elapsed = (unsigned int)diff_time(before, after);
|
|
+ TRACE(TRACE_DATABASE, "last query took [%d] seconds", elapsed);
|
|
+ if (elapsed > db_params.query_time_warning)
|
|
+ TRACE(TRACE_WARNING, "slow query [%s] took [%d] seconds", query, elapsed);
|
|
+ else if (elapsed > db_params.query_time_notice)
|
|
+ TRACE(TRACE_NOTICE, "slow query [%s] took [%d] seconds", query, elapsed);
|
|
+ else if (elapsed > db_params.query_time_info)
|
|
+ TRACE(TRACE_INFO, "slow query [%s] took [%d] seconds", query, elapsed);
|
|
return;
|
|
}
|
|
|
|
diff --git src/dm_misc.c src/dm_misc.c
|
|
index 1294930..e27ef34 100644
|
|
--- src/dm_misc.c
|
|
+++ src/dm_misc.c
|
|
@@ -2422,4 +2422,16 @@ void uint64_free(void *data)
|
|
mempool_push(small_pool, data, sizeof(uint64_t));
|
|
}
|
|
|
|
+/*
|
|
+ * calculate the difference between two timeval values
|
|
+ * as number of seconds, using default rounding
|
|
+ */
|
|
+int diff_time(struct timeval before, struct timeval after)
|
|
+{
|
|
+ int tbefore = before.tv_sec * 1000000 + before.tv_usec;
|
|
+ int tafter = after.tv_sec * 1000000 + after.tv_usec;
|
|
+ int tdiff = tafter - tbefore;
|
|
+ return (int)rint((double)tdiff/1000000);
|
|
+}
|
|
+
|
|
|
|
diff --git src/dm_misc.h src/dm_misc.h
|
|
index a5dd04f..9660dfa 100644
|
|
--- src/dm_misc.h
|
|
+++ src/dm_misc.h
|
|
@@ -178,4 +178,6 @@ gchar * get_crlf_encoded_opt(const gchar *string, int dots);
|
|
void strip_crlf(char *buffer);
|
|
void uint64_free(void *);
|
|
|
|
+int diff_time(struct timeval before, struct timeval after);
|
|
+
|
|
#endif
|
|
diff --git test/check_dbmail_db.c test/check_dbmail_db.c
|
|
index 47c34be..e6cb170 100644
|
|
--- test/check_dbmail_db.c
|
|
+++ test/check_dbmail_db.c
|
|
@@ -414,6 +414,32 @@ START_TEST(test_db_get_sql)
|
|
}
|
|
END_TEST
|
|
|
|
+START_TEST(test_diff_time)
|
|
+{
|
|
+ struct timeval before, after;
|
|
+ int diff;
|
|
+
|
|
+ before.tv_sec = 1; before.tv_usec = 0;
|
|
+ after.tv_sec = 2; after.tv_usec = 0;
|
|
+ diff = diff_time(before, after);
|
|
+ fail_unless(diff == 1);
|
|
+
|
|
+ before.tv_sec = 1; before.tv_usec = 1000000 - 1;
|
|
+ after.tv_sec = 2; after.tv_usec = 0;
|
|
+ diff = diff_time(before, after);
|
|
+ fail_unless(diff == 0);
|
|
+
|
|
+ before.tv_sec = 1; before.tv_usec = 500001;
|
|
+ after.tv_sec = 2; after.tv_usec = 0;
|
|
+ diff = diff_time(before, after);
|
|
+ fail_unless(diff == 0);
|
|
+
|
|
+ before.tv_sec = 1; before.tv_usec = 499999;
|
|
+ after.tv_sec = 2; after.tv_usec = 0;
|
|
+ diff = diff_time(before, after);
|
|
+ fail_unless(diff == 1);
|
|
+}
|
|
+END_TEST
|
|
|
|
Suite *dbmail_db_suite(void)
|
|
{
|
|
@@ -435,6 +461,7 @@ Suite *dbmail_db_suite(void)
|
|
tcase_add_test(tc_db, test_mailbox_match_new);
|
|
tcase_add_test(tc_db, test_db_findmailbox_by_regex);
|
|
tcase_add_test(tc_db, test_db_get_sql);
|
|
+ tcase_add_test(tc_db, test_diff_time);
|
|
|
|
return s;
|
|
}
|
|
--
|
|
2.10.1 (Apple Git-78)
|
|
|