]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-smtp: Set application protocol for TLS
authorAki Tuomi <aki.tuomi@open-xchange.com>
Fri, 15 Nov 2024 09:51:21 +0000 (11:51 +0200)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Fri, 17 Jan 2025 08:40:01 +0000 (10:40 +0200)
src/lib-smtp/smtp-client-connection.c
src/lib-smtp/smtp-server-connection.c

index 19e067773d7e6ba73be3959a9e3ca727c1f00637..7685c3107fbf4eb51dc04f9b2237b63558de6f4f 100644 (file)
@@ -1590,8 +1590,16 @@ smtp_client_connection_init_ssl_ctx(struct smtp_client_connection *conn,
                        "Requested SSL connection, but no SSL settings given";
                return -1;
        }
-       return ssl_iostream_client_context_cache_get(conn->set.ssl,
-                                                    &conn->ssl_ctx, error_r);
+       if (ssl_iostream_client_context_cache_get(conn->set.ssl, &conn->ssl_ctx,
+                                                 error_r) < 0)
+               return -1;
+       const char *application_protocol = smtp_protocol_name(conn->protocol);
+       const char *const names[] = {
+               application_protocol,
+               NULL
+       };
+       ssl_iostream_context_set_application_protocols(conn->ssl_ctx, names);
+       return 0;
 }
 
 static int
index b7cd7ad1411af8deeb25dcc11240c88518b5e41e..1a3dae1c66fb21ce9d19893a11ad128df56f2e54 100644 (file)
@@ -388,6 +388,12 @@ smtp_server_connection_sni_callback(const char *name, const char **error_r,
        }
        settings_free(ssl_set);
        settings_free(ssl_server_set);
+       const char *application_protocol = smtp_protocol_name(conn->set.protocol);
+       const char *const names[] = {
+               application_protocol,
+               NULL
+       };
+       ssl_iostream_context_set_application_protocols(ssl_ctx, names);
        ssl_iostream_change_context(conn->ssl_iostream, ssl_ctx);
        ssl_iostream_context_unref(&ssl_ctx);
        return 0;