master_status_error, service);
}
master_service_io_listeners_add(service);
- if (service->want_ssl_settings)
+ if (service->want_ssl_settings &&
+ (service->flags & MASTER_SERVICE_FLAG_NO_SSL_INIT) == 0)
master_service_ssl_ctx_init(service);
if ((service->flags & MASTER_SERVICE_FLAG_STD_CLIENT) != 0) {
/* SSL settings are always looked up when we have ssl listeners.
This flag enables looking up SSL settings even without ssl
listeners (i.e. the service does STARTTLS). */
- MASTER_SERVICE_FLAG_USE_SSL_SETTINGS = 0x200
+ MASTER_SERVICE_FLAG_USE_SSL_SETTINGS = 0x200,
+ /* Don't initialize SSL context automatically. */
+ MASTER_SERVICE_FLAG_NO_SSL_INIT = 0x400
};
struct master_service_connection {
enum master_service_flags service_flags =
MASTER_SERVICE_FLAG_KEEP_CONFIG_OPEN |
MASTER_SERVICE_FLAG_TRACK_LOGIN_STATE |
- MASTER_SERVICE_FLAG_USE_SSL_SETTINGS;
+ MASTER_SERVICE_FLAG_USE_SSL_SETTINGS |
+ MASTER_SERVICE_FLAG_NO_SSL_INIT;
pool_t set_pool;
bool allow_core_dumps = FALSE;
const char *login_socket;