commit 1fbc130: [Feature] Support ping command in fuzzy storage

Vsevolod Stakhov vsevolod at rspamd.com
Fri Nov 10 13:49:03 UTC 2023


Author: Vsevolod Stakhov
Date: 2023-11-09 14:23:34 +0000
URL: https://github.com/rspamd/rspamd/commit/1fbc13099ee4dbabc26be7814258db6b54bd14d4

[Feature] Support ping command in fuzzy storage

---
 src/fuzzy_storage.c        | 11 +++++++++++
 src/libserver/fuzzy_wire.h | 19 ++++++++++++++++++-
 2 files changed, 29 insertions(+), 1 deletion(-)

diff --git a/src/fuzzy_storage.c b/src/fuzzy_storage.c
index 23a4f45cd..5adf54e46 100644
--- a/src/fuzzy_storage.c
+++ b/src/fuzzy_storage.c
@@ -1337,6 +1337,17 @@ rspamd_fuzzy_process_command(struct fuzzy_session *session)
 		result.v1.flag = session->ctx->stat.fuzzy_hashes;
 		rspamd_fuzzy_make_reply(cmd, &result, session, send_flags);
 	}
+	else if (cmd->cmd == FUZZY_PING) {
+		/* Obtain milliseconds since midnight */
+		double now = rspamd_get_calendar_ticks();
+		double millis = now - (int64_t) now;
+		now = ((int64_t) now % 86400) + millis;
+
+		result.v1.prob = 1.0f;
+		result.v1.flag = now * 1000;
+		result.v1.value = result.v1.flag - cmd->value; /* This is transmitted time from our PoV */
+		rspamd_fuzzy_make_reply(cmd, &result, session, send_flags);
+	}
 	else {
 		if (rspamd_fuzzy_check_write(session)) {
 			/* Check whitelist */
diff --git a/src/libserver/fuzzy_wire.h b/src/libserver/fuzzy_wire.h
index 51bd12244..989a31eb4 100644
--- a/src/libserver/fuzzy_wire.h
+++ b/src/libserver/fuzzy_wire.h
@@ -1,3 +1,19 @@
+/*
+ * Copyright 2023 Vsevolod Stakhov
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 #ifndef RSPAMD_FUZZY_STORAGE_H
 #define RSPAMD_FUZZY_STORAGE_H
 
@@ -21,7 +37,8 @@ extern "C" {
 #define FUZZY_WRITE 1
 #define FUZZY_DEL 2
 #define FUZZY_STAT 3
-#define FUZZY_CLIENT_MAX 3
+#define FUZZY_PING 4
+#define FUZZY_CLIENT_MAX 4
 /* Internal commands */
 #define FUZZY_REFRESH 100 /* Update expire */
 #define FUZZY_DUP 101     /* Skip duplicate in update queue */


More information about the Commits mailing list