dovecot-2.0: login: If proxy returns ssl=yes and no port, switch...

dovecot at dovecot.org dovecot at dovecot.org
Wed Apr 14 19:19:30 EEST 2010


details:   http://hg.dovecot.org/dovecot-2.0/rev/5f3edac6b3bf
changeset: 11155:5f3edac6b3bf
user:      Timo Sirainen <tss at iki.fi>
date:      Wed Apr 14 19:19:27 2010 +0300
description:
login: If proxy returns ssl=yes and no port, switch port to imaps/pop3s.

diffstat:

 src/imap-login/client.c               |  2 +-
 src/login-common/client-common-auth.c |  9 ++++++---
 src/login-common/login-common.h       |  2 +-
 src/pop3-login/client.c               |  2 +-
 4 files changed, 9 insertions(+), 6 deletions(-)

diffs (70 lines):

diff -r 9188fc60d615 -r 5f3edac6b3bf src/imap-login/client.c
--- a/src/imap-login/client.c	Wed Apr 14 19:05:42 2010 +0300
+++ b/src/imap-login/client.c	Wed Apr 14 19:19:27 2010 +0300
@@ -30,7 +30,7 @@
 
 const char *login_protocol = "imap";
 const char *login_process_name = "imap-login";
-unsigned int login_default_port = 143;
+unsigned int login_default_port = 143, login_default_ssl_port = 993;
 
 void login_process_preinit(void)
 {
diff -r 9188fc60d615 -r 5f3edac6b3bf src/login-common/client-common-auth.c
--- a/src/login-common/client-common-auth.c	Wed Apr 14 19:05:42 2010 +0300
+++ b/src/login-common/client-common-auth.c	Wed Apr 14 19:19:27 2010 +0300
@@ -57,7 +57,6 @@
 	const char *key, *value, *p;
 
 	memset(reply_r, 0, sizeof(*reply_r));
-	reply_r->port = login_default_port;
 
 	for (; *args != NULL; args++) {
 		p = strchr(*args, '=');
@@ -91,9 +90,11 @@
 		else if (strcmp(key, "master") == 0)
 			reply_r->master_user = value;
 		else if (strcmp(key, "ssl") == 0) {
-			if (strcmp(value, "yes") == 0)
+			if (strcmp(value, "yes") == 0) {
 				reply_r->ssl_flags |= PROXY_SSL_FLAG_YES;
-			else if (strcmp(value, "any-cert") == 0) {
+				if (reply_r->port == 0)
+					reply_r->port = login_default_ssl_port;
+			} else if (strcmp(value, "any-cert") == 0) {
 				reply_r->ssl_flags |= PROXY_SSL_FLAG_YES |
 					PROXY_SSL_FLAG_ANY_CERT;
 			}
@@ -104,6 +105,8 @@
 		} else if (client->set->auth_debug)
 			i_debug("Ignoring unknown passdb extra field: %s", key);
 	}
+	if (reply_r->port == 0)
+		reply_r->port = login_default_port;
 
 	if (reply_r->destuser == NULL)
 		reply_r->destuser = client->virtual_user;
diff -r 9188fc60d615 -r 5f3edac6b3bf src/login-common/login-common.h
--- a/src/login-common/login-common.h	Wed Apr 14 19:05:42 2010 +0300
+++ b/src/login-common/login-common.h	Wed Apr 14 19:19:27 2010 +0300
@@ -13,7 +13,7 @@
 	"Plaintext authentication disallowed on non-secure (SSL/TLS) connections."
 
 extern const char *login_protocol, *login_process_name;
-extern unsigned int login_default_port;
+extern unsigned int login_default_port, login_default_ssl_port;
 
 extern struct auth_client *auth_client;
 extern struct master_auth *master_auth;
diff -r 9188fc60d615 -r 5f3edac6b3bf src/pop3-login/client.c
--- a/src/pop3-login/client.c	Wed Apr 14 19:05:42 2010 +0300
+++ b/src/pop3-login/client.c	Wed Apr 14 19:19:27 2010 +0300
@@ -24,7 +24,7 @@
 
 const char *login_protocol = "pop3";
 const char *login_process_name = "pop3-login";
-unsigned int login_default_port = 110;
+unsigned int login_default_port = 110, login_default_ssl_port = 995;
 
 void login_process_preinit(void)
 {


More information about the dovecot-cvs mailing list