"Invalid PROTO parameter");
return;
}
+ } else if (strcmp(param.keyword, "SESSION") == 0) {
+ if (strcasecmp(param.value, "[UNAVAILABLE]") == 0)
+ continue;
+ proxy_data->session = p_strdup(cmd->pool, param.value);
} else if (strcmp(param.keyword, "TIMEOUT") == 0) {
if (str_to_uint(param.value,
&proxy_data->timeout_secs) < 0) {
void smtp_server_reply_ehlo_add_xclient(struct smtp_server_reply *reply)
{
static const char *base_fields =
- "ADDR PORT PROTO HELO LOGIN TTL TIMEOUT";
+ "ADDR PORT PROTO HELO LOGIN SESSION TTL TIMEOUT";
struct smtp_server_cmd_ctx *cmd = &reply->command->context;
struct smtp_server_connection *conn = cmd->conn;
void **other_sets)
{
static const char *const xclient_extensions[] =
- { "SESSION", "FORWARD", NULL };
+ { "FORWARD", NULL };
struct submission_client *subm_client =
container_of(client, struct submission_client, common);
struct smtp_server_settings smtp_set;
client->common.remote_port = data->source_port;
if (data->ttl_plus_1 > 0)
client->common.proxy_ttl = data->ttl_plus_1 - 1;
+ if (data->session != NULL) {
+ client->common.session_id =
+ p_strdup(client->common.pool, data->session);
+ }
for (i = 0; i < data->extra_fields_count; i++) {
const char *name = data->extra_fields[i].name;
"Invalid FORWARD parameter");
}
}
- } else if (strcasecmp(name, "SESSION") == 0) {
- if (client->common.session_id != NULL)
- continue;
- client->common.session_id =
- p_strdup(client->common.pool, value);
}
}
}