From: Timo Sirainen Date: Fri, 6 Sep 2024 11:42:55 +0000 (+0300) Subject: imap-login: Don't forward x-multiplex ID parameter when proxying X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1fd4fcc00335a0560e5686e17aceece7933f214d;p=thirdparty%2Fdovecot%2Fcore.git imap-login: Don't forward x-multiplex ID parameter when proxying If a connecting v2.4 proxy sends this parameter, it should be ignored rather than forwarded to the next hop, which again might be v2.4. This would end up enabling multiplex iostreams, even though this v2.3 proxy doesn't understand it. --- diff --git a/src/imap-login/imap-login-cmd-id.c b/src/imap-login/imap-login-cmd-id.c index a1c6294651..7db4c9d7d3 100644 --- a/src/imap-login/imap-login-cmd-id.c +++ b/src/imap-login/imap-login-cmd-id.c @@ -70,6 +70,14 @@ cmd_id_x_forward_(struct imap_client *client, client_add_forward_field(&client->common, key+10, value); } +static void +cmd_id_x_multiplex(struct imap_client *client ATTR_UNUSED, + const char *key ATTR_UNUSED, const char *value ATTR_UNUSED) +{ + /* ignore - registered here only so that it's not automatically + forwarded by imap_id_retain=yes handling */ +} + static const struct imap_id_param_handler imap_login_id_params[] = { { "x-originating-ip", FALSE, cmd_id_x_originating_ip }, { "x-originating-port", FALSE, cmd_id_x_originating_port }, @@ -79,6 +87,7 @@ static const struct imap_id_param_handler imap_login_id_params[] = { { "x-session-id", FALSE, cmd_id_x_session_id }, { "x-session-ext-id", FALSE, cmd_id_x_session_id }, { "x-forward-", TRUE, cmd_id_x_forward_ }, + { "x-multiplex", FALSE, cmd_id_x_multiplex }, { NULL, FALSE, NULL } };