connection_deinit(&conn->conn);
+ i_free(conn->proxy_helo);
i_free(conn->helo_domain);
i_free(conn->username);
event_unref(&conn->next_trans_event);
i_zero(proxy_data);
proxy_data->source_ip = conn->conn.remote_ip;
proxy_data->source_port = conn->conn.remote_port;
- if (conn->helo.domain_valid)
+ if (conn->proxy_helo != NULL)
+ proxy_data->helo = conn->proxy_helo;
+ else if (conn->helo.domain_valid)
proxy_data->helo = conn->helo.domain;
proxy_data->login = conn->username;
conn->helo_domain = i_strdup(proxy_data->helo);
conn->helo.domain = conn->helo_domain;
conn->helo.domain_valid = TRUE;
+ if (conn->helo.domain_valid) {
+ i_free(conn->proxy_helo);
+ conn->proxy_helo = i_strdup(proxy_data->helo);
+ }
}
if (proxy_data->login != NULL) {
i_free(conn->username);
enum smtp_proxy_protocol proxy_proto;
unsigned int proxy_ttl_plus_1;
unsigned int proxy_timeout_secs;
+ char *proxy_helo;
struct smtp_server_helo_data helo, *pending_helo;
char *helo_domain, *username;