dovecot-1.2: imap-login: If imap_capability is set, show it in t...
dovecot at dovecot.org
dovecot at dovecot.org
Tue Oct 20 22:49:09 EEST 2009
details: http://hg.dovecot.org/dovecot-1.2/rev/ab32d7e2c0d6
changeset: 9448:ab32d7e2c0d6
user: Timo Sirainen <tss at iki.fi>
date: Tue Oct 20 15:49:01 2009 -0400
description:
imap-login: If imap_capability is set, show it in the banner instead of the default.
diffstat:
5 files changed, 17 insertions(+), 7 deletions(-)
src/imap-login/client.c | 9 +++++----
src/login-common/common.h | 2 +-
src/login-common/main.c | 7 +++++--
src/login-common/ssl-proxy-openssl.c | 4 ++++
src/master/login-process.c | 2 ++
diffs (99 lines):
diff -r 36b8d97d0f58 -r ab32d7e2c0d6 src/imap-login/client.c
--- a/src/imap-login/client.c Tue Oct 20 15:40:51 2009 -0400
+++ b/src/imap-login/client.c Tue Oct 20 15:49:01 2009 -0400
@@ -93,11 +93,12 @@ bool client_skip_line(struct imap_client
static const char *get_capability(struct imap_client *client, bool full)
{
- const char *auths;
-
+ const char *auths, *cap_str;
+
+ cap_str = full || capability_string_overridden ? capability_string :
+ CAPABILITY_BANNER_STRING;
auths = client_authenticate_get_capabilities(client->common.secured);
- return t_strconcat(full ? capability_string : CAPABILITY_BANNER_STRING,
- (ssl_initialized && !client->common.tls) ?
+ return t_strconcat(cap_str, (ssl_initialized && !client->common.tls) ?
" STARTTLS" : "",
disable_plaintext_auth && !client->common.secured ?
" LOGINDISABLED" : "", auths, NULL);
diff -r 36b8d97d0f58 -r ab32d7e2c0d6 src/login-common/common.h
--- a/src/login-common/common.h Tue Oct 20 15:40:51 2009 -0400
+++ b/src/login-common/common.h Tue Oct 20 15:49:01 2009 -0400
@@ -23,7 +23,7 @@ extern unsigned int max_connections;
extern unsigned int max_connections;
extern unsigned int login_process_uid;
extern struct auth_client *auth_client;
-extern bool closing_down;
+extern bool closing_down, capability_string_overridden;
void main_ref(void);
void main_unref(void);
diff -r 36b8d97d0f58 -r ab32d7e2c0d6 src/login-common/main.c
--- a/src/login-common/main.c Tue Oct 20 15:40:51 2009 -0400
+++ b/src/login-common/main.c Tue Oct 20 15:49:01 2009 -0400
@@ -28,7 +28,7 @@ unsigned int max_connections;
unsigned int max_connections;
unsigned int login_process_uid;
struct auth_client *auth_client;
-bool closing_down;
+bool closing_down, capability_string_overridden;
static const char *process_name;
static struct ioloop *ioloop;
@@ -354,8 +354,11 @@ static void main_init(void)
/* capability default is set in imap/pop3-login */
value = getenv("CAPABILITY_STRING");
- if (value != NULL && *value != '\0')
+ if (value != NULL && *value != '\0') {
capability_string = value;
+ if (getenv("CAPABILITY_STRING_OVERRIDDEN") != NULL)
+ capability_string_overridden = TRUE;
+ }
closing_down = FALSE;
main_refcount = 0;
diff -r 36b8d97d0f58 -r ab32d7e2c0d6 src/login-common/ssl-proxy-openssl.c
--- a/src/login-common/ssl-proxy-openssl.c Tue Oct 20 15:40:51 2009 -0400
+++ b/src/login-common/ssl-proxy-openssl.c Tue Oct 20 15:49:01 2009 -0400
@@ -721,6 +721,7 @@ static DH *ssl_tmp_dh_callback(SSL *ssl
return ssl_params.dh_1024;
}
+#ifdef HAVE_SSL_CTX_SET_INFO_CALLBACK
static void ssl_info_callback(const SSL *ssl, int where, int ret)
{
struct ssl_proxy *proxy;
@@ -738,6 +739,7 @@ static void ssl_info_callback(const SSL
net_ip2addr(&proxy->ip));
}
}
+#endif
static int ssl_verify_client_cert(int preverify_ok, X509_STORE_CTX *ctx)
{
@@ -820,8 +822,10 @@ static void ssl_proxy_ctx_init(SSL_CTX *
cafile, ssl_last_error());
}
}
+#ifdef HAVE_SSL_CTX_SET_INFO_CALLBACK
if (verbose_ssl)
SSL_CTX_set_info_callback(ssl_ctx, ssl_info_callback);
+#endif
if (SSL_CTX_need_tmp_RSA(ssl_ctx))
SSL_CTX_set_tmp_rsa_callback(ssl_ctx, ssl_gen_rsa_key);
SSL_CTX_set_tmp_dh_callback(ssl_ctx, ssl_tmp_dh_callback);
diff -r 36b8d97d0f58 -r ab32d7e2c0d6 src/master/login-process.c
--- a/src/master/login-process.c Tue Oct 20 15:40:51 2009 -0400
+++ b/src/master/login-process.c Tue Oct 20 15:49:01 2009 -0400
@@ -619,6 +619,8 @@ static void login_process_init_env(struc
*set->imap_capability != '\0' ?
set->imap_capability :
set->imap_generated_capability, NULL));
+ if (*set->imap_capability != '\0')
+ env_put("CAPABILITY_STRING_OVERRIDDEN=1");
}
if (*set->login_trusted_networks != '\0') {
env_put(t_strconcat("TRUSTED_NETWORKS=",
More information about the dovecot-cvs
mailing list