aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/libutil/logger.c47
-rw-r--r--src/libutil/radix.c45
2 files changed, 32 insertions, 60 deletions
diff --git a/src/libutil/logger.c b/src/libutil/logger.c
index 54968ac58..5db081b61 100644
--- a/src/libutil/logger.c
+++ b/src/libutil/logger.c
@@ -56,7 +56,7 @@ struct rspamd_logger_s {
enum rspamd_log_type type;
pid_t pid;
GQuark process_type;
- radix_tree_t *debug_ip;
+ radix_compressed_t *debug_ip;
guint32 last_line_cksum;
guint32 repeats;
gchar *saved_message;
@@ -290,11 +290,6 @@ rspamd_set_logger (struct rspamd_config *cfg,
GQuark ptype,
struct rspamd_main *rspamd)
{
- gchar **strvec, *p, *err;
- gint num, i, k;
- struct in_addr addr;
- guint32 mask = 0xFFFFFFFF;
-
if (rspamd->logger == NULL) {
rspamd->logger = g_malloc (sizeof (rspamd_logger_t));
memset (rspamd->logger, 0, sizeof (rspamd_logger_t));
@@ -340,45 +335,19 @@ rspamd_set_logger (struct rspamd_config *cfg,
if (rspamd->cfg->debug_ip_map != NULL) {
/* Try to add it as map first of all */
if (rspamd->logger->debug_ip) {
- radix_tree_free (rspamd->logger->debug_ip);
+ radix_destroy_compressed (rspamd->logger->debug_ip);
}
- rspamd->logger->debug_ip = radix_tree_create ();
+ rspamd->logger->debug_ip = radix_create_compressed ();
if (!add_map (rspamd->cfg, rspamd->cfg->debug_ip_map,
"IP addresses for which debug logs are enabled",
read_radix_list, fin_radix_list,
(void **)&rspamd->logger->debug_ip)) {
- /* Try to parse it as list */
- strvec = g_strsplit_set (rspamd->cfg->debug_ip_map, ",; ", 0);
- num = g_strv_length (strvec);
-
- for (i = 0; i < num; i++) {
- g_strstrip (strvec[i]);
-
- if ((p = strchr (strvec[i], '/')) != NULL) {
- /* Try to extract mask */
- *p = '\0';
- p++;
- errno = 0;
- k = strtoul (p, &err, 10);
- if (errno != 0 || *err != '\0' || k > 32) {
- continue;
- }
- }
- else {
- k = 32;
- }
- if (inet_aton (strvec[i], &addr)) {
- /* Check ip */
- mask = mask << (32 - k);
- radix32tree_insert (rspamd->logger->debug_ip,
- ntohl (addr.s_addr), mask, 1);
- }
- }
- g_strfreev (strvec);
+ rspamd_config_parse_ip_list (rspamd->cfg->debug_ip_map,
+ &rspamd->logger->debug_ip);
}
}
else if (rspamd->logger->debug_ip) {
- radix_tree_free (rspamd->logger->debug_ip);
+ radix_destroy_compressed (rspamd->logger->debug_ip);
rspamd->logger->debug_ip = NULL;
}
@@ -815,8 +784,8 @@ rspamd_conditional_debug (rspamd_logger_t *rspamd_log,
if (rspamd_log->cfg->log_level >= G_LOG_LEVEL_DEBUG ||
rspamd_log->is_debug) {
if (rspamd_log->debug_ip && addr != NULL) {
- if (addr->af == AF_INET && radix32tree_find (rspamd_log->debug_ip,
- ntohl (addr->addr.s4.sin_addr.s_addr)) == RADIX_NO_VALUE) {
+ if (radix_find_compressed_addr (rspamd_log->debug_ip, addr)
+ == RADIX_NO_VALUE) {
return;
}
}
diff --git a/src/libutil/radix.c b/src/libutil/radix.c
index 240a7d67d..c8aaaf946 100644
--- a/src/libutil/radix.c
+++ b/src/libutil/radix.c
@@ -28,27 +28,6 @@
#include "main.h"
#include "mem_pool.h"
-static void * radix_alloc (radix_tree_t * tree);
-
-#undef RADIX_DEBUG
-#ifndef RADIX_DEBUG
-#undef msg_debug
-#define msg_debug(...) do {} while (0)
-#endif
-
-struct radix_node_s {
- radix_node_t *right;
- radix_node_t *left;
- radix_node_t *parent;
- uintptr_t value;
- guint32 key;
-};
-
-struct radix_tree_s {
- radix_node_t *root;
- size_t size;
- rspamd_mempool_t *pool;
-};
struct radix_compressed_node {
union {
@@ -73,6 +52,29 @@ struct radix_tree_compressed {
size_t size;
};
+
+#ifdef LEGACY_RADIX
+static void * radix_alloc (radix_tree_t * tree);
+
+#undef RADIX_DEBUG
+#ifndef RADIX_DEBUG
+#undef msg_debug
+#define msg_debug(...) do {} while (0)
+#endif
+
+struct radix_node_s {
+ radix_node_t *right;
+ radix_node_t *left;
+ radix_node_t *parent;
+ uintptr_t value;
+ guint32 key;
+};
+struct radix_tree_s {
+ radix_node_t *root;
+ size_t size;
+ rspamd_mempool_t *pool;
+};
+
radix_tree_t *
radix_tree_create (void)
{
@@ -373,6 +375,7 @@ radix32_tree_find_addr (radix_tree_t *tree, rspamd_inet_addr_t *addr)
return radix32tree_find (tree, ntohl (addr->addr.s4.sin_addr.s_addr));
}
+#endif /* Old radix code */
static gboolean
radix_compare_compressed (struct radix_compressed_node *node,