struct fuzzy_tcp_connection {
struct fuzzy_rule *rule; /* Parent rule */
struct upstream *server; /* Connected upstream */
+ char *server_name; /* Cached upstream name for logging */
rspamd_inet_addr_t *addr; /* Server address */
int fd; /* Socket file descriptor */
}
msg_debug("fuzzy_tcp: freeing connection to %s for rule %s",
- rspamd_upstream_name(conn->server),
- conn->rule->name);
+ conn->server_name ? conn->server_name : "unknown",
+ conn->rule ? conn->rule->name : "unknown");
+
+ if (conn->server_name) {
+ g_free(conn->server_name);
+ }
g_free(conn);
}
conn = fuzzy_tcp_connection_new(rule, task->event_loop);
conn->fd = fd;
conn->server = upstream;
+ conn->server_name = g_strdup(rspamd_upstream_name(upstream));
conn->addr = addr;
conn->connecting = TRUE;
conn->connect_start = rspamd_get_calendar_ticks();
}
msg_info("fuzzy_tcp: cleaning up connection to %s for rule %s, reason: %s",
- rspamd_upstream_name(conn->server),
+ conn->server_name ? conn->server_name : "unknown",
conn->rule->name,
reason ? reason : "unknown");