"SESSION", xclient->session);
}
+ /* CLIENT-TRANSPORT */
+ if (xclient->client_transport != NULL &&
+ str_array_icase_find(xclient_args, "CLIENT-TRANSPORT")) {
+ smtp_client_connection_xclient_add(conn, str, offset,
+ "CLIENT-TRANSPORT", xclient->client_transport);
+ }
+
/* TTL */
if (xclient->ttl_plus_1 > 0 &&
str_array_icase_find(xclient_args, "TTL")) {
dst->login = p_strdup(pool, src->login);
if (src->session != NULL && *src->session != '\0')
dst->session = p_strdup(pool, src->session);
+ if (src->client_transport != NULL && *src->client_transport != '\0')
+ dst->client_transport = p_strdup(pool, src->client_transport);
if (src->ttl_plus_1 > 0)
dst->ttl_plus_1 = src->ttl_plus_1;
if (src->timeout_secs > 0)
const char *helo, *login;
/* SESSION */
const char *session;
+ /* CLIENT-TRANSPORT */
+ const char *client_transport;
/* TTL: send as this -1, so the default 0 means "don't send it" */
unsigned int ttl_plus_1;
if (strcasecmp(param.value, "[UNAVAILABLE]") == 0)
continue;
proxy_data->session = p_strdup(cmd->pool, param.value);
+ } else if (strcmp(param.keyword, "CLIENT-TRANSPORT") == 0) {
+ if (strcasecmp(param.value, "[UNAVAILABLE]") == 0)
+ continue;
+ proxy_data->client_transport =
+ p_strdup(cmd->pool, param.value);
} else if (strcmp(param.keyword, "TIMEOUT") == 0) {
if (str_to_uint(param.value,
&proxy_data->timeout_secs) < 0) {
proxy_data->helo = conn->helo.domain;
proxy_data->login = conn->username;
proxy_data->session = conn->session_id;
+ proxy_data->client_transport = conn->client_transport;
if (conn->proxy_proto != SMTP_PROXY_PROTOCOL_UNKNOWN)
proxy_data->proto = conn->proxy_proto;
i_free(conn->session_id);
conn->session_id = i_strdup(proxy_data->session);
}
+ if (proxy_data->client_transport != NULL) {
+ i_free(conn->client_transport);
+ conn->client_transport = i_strdup(proxy_data->client_transport);
+ }
if (proxy_data->ttl_plus_1 > 0)
conn->proxy_ttl_plus_1 = proxy_data->ttl_plus_1;
unsigned int proxy_ttl_plus_1;
unsigned int proxy_timeout_secs;
char *proxy_helo;
+ char *client_transport;
struct smtp_server_helo_data helo, *pending_helo;
char *helo_domain, *username;
void smtp_server_reply_ehlo_add_xclient(struct smtp_server_reply *reply)
{
static const char *base_fields =
- "ADDR PORT PROTO HELO LOGIN SESSION TTL TIMEOUT";
+ "ADDR PORT PROTO HELO LOGIN SESSION CLIENT-TRANSPORT TTL TIMEOUT";
struct smtp_server_cmd_ctx *cmd = &reply->command->context;
struct smtp_server_connection *conn = cmd->conn;