Forráskód Böngészése

move use_imaps out of server_conf_t

it doesn't belong there - it's a property of imap_server_conf_t.
the port setup is now done while reading the config.

this makes socket.[hc] imap-agnostic.
Oswald Buddenhagen 11 éve
szülő
commit
aa4f7a7d00
3 módosított fájl, 19 hozzáadás és 19 törlés
  1. 12 5
      src/drv_imap.c
  2. 7 13
      src/socket.c
  3. 0 1
      src/socket.h

+ 12 - 5
src/drv_imap.c

@@ -46,6 +46,7 @@ typedef struct imap_server_conf {
 	int max_in_progress;
 #ifdef HAVE_LIBSSL
 	char use_ssl;
+	char use_imaps;
 	char require_ssl;
 	char require_cram;
 #endif
@@ -1531,7 +1532,7 @@ imap_open_store_connected( int ok, void *aux )
 	if (!ok)
 		imap_open_store_bail( ctx );
 #ifdef HAVE_LIBSSL
-	else if (srvc->sconf.use_imaps)
+	else if (srvc->use_imaps)
 		socket_start_tls( &ctx->conn, imap_open_store_tlsstarted1 );
 #endif
 }
@@ -1581,7 +1582,7 @@ imap_open_store_authenticate( imap_store_t *ctx )
 
 	if (ctx->greeting != GreetingPreauth) {
 #ifdef HAVE_LIBSSL
-		if (!srvc->sconf.use_imaps && srvc->use_ssl) {
+		if (!srvc->use_imaps && srvc->use_ssl) {
 			/* always try to select SSL support if available */
 			if (CAP(STARTTLS)) {
 				imap_exec( ctx, 0, imap_open_store_authenticate_p2, "STARTTLS" );
@@ -1600,7 +1601,7 @@ imap_open_store_authenticate( imap_store_t *ctx )
 		imap_open_store_authenticate2( ctx );
 	} else {
 #ifdef HAVE_LIBSSL
-		if (!srvc->sconf.use_imaps && srvc->require_ssl) {
+		if (!srvc->use_imaps && srvc->require_ssl) {
 			error( "IMAP error: SSL support not available\n" );
 			imap_open_store_bail( ctx );
 			return;
@@ -2272,7 +2273,7 @@ imap_parse_store( conffile_t *cfg, store_conf_t **storep )
 #ifdef HAVE_LIBSSL
 			if (starts_with( cfg->val, -1, "imaps:", 6 )) {
 				cfg->val += 6;
-				server->sconf.use_imaps = 1;
+				server->use_imaps = 1;
 				server->sconf.use_sslv2 = 1;
 				server->sconf.use_sslv3 = 1;
 			} else
@@ -2310,7 +2311,7 @@ imap_parse_store( conffile_t *cfg, store_conf_t **storep )
 		} else if (!strcasecmp( "RequireSSL", cfg->cmd ))
 			server->require_ssl = parse_bool( cfg );
 		else if (!strcasecmp( "UseIMAPS", cfg->cmd ))
-			server->sconf.use_imaps = parse_bool( cfg );
+			server->use_imaps = parse_bool( cfg );
 		else if (!strcasecmp( "UseSSLv2", cfg->cmd ))
 			server->sconf.use_sslv2 = parse_bool( cfg );
 		else if (!strcasecmp( "UseSSLv3", cfg->cmd ))
@@ -2377,6 +2378,12 @@ imap_parse_store( conffile_t *cfg, store_conf_t **storep )
 			return 1;
 		}
 #endif
+		if (!server->sconf.port)
+			server->sconf.port =
+#ifdef HAVE_LIBSSL
+				server->use_imaps ? 993 :
+#endif
+				143;
 	}
 	if (store) {
 		if (!store->server) {

+ 7 - 13
src/socket.c

@@ -312,7 +312,7 @@ socket_connect( conn_t *sock, void (*cb)( int ok, void *aux ) )
 
 	sock->callbacks.connect = cb;
 
-	/* open connection to IMAP server */
+	/* open connection to server */
 	if (conf->tunnel) {
 		int a[2];
 
@@ -352,7 +352,7 @@ socket_connect( conn_t *sock, void (*cb)( int ok, void *aux ) )
 		hints.ai_flags = AI_ADDRCONFIG;
 		infon( "Resolving %s... ", conf->host );
 		if ((gaierr = getaddrinfo( conf->host, NULL, &hints, &sock->addrs ))) {
-			error( "IMAP error: Cannot resolve server '%s': %s\n", conf->host, gai_strerror( gaierr ) );
+			error( "Error: Cannot resolve server '%s': %s\n", conf->host, gai_strerror( gaierr ) );
 			socket_connect_bail( sock );
 			return;
 		}
@@ -365,7 +365,7 @@ socket_connect( conn_t *sock, void (*cb)( int ok, void *aux ) )
 		infon( "Resolving %s... ", conf->host );
 		he = gethostbyname( conf->host );
 		if (!he) {
-			error( "IMAP error: Cannot resolve server '%s': %s\n", conf->host, hstrerror( h_errno ) );
+			error( "Error: Cannot resolve server '%s': %s\n", conf->host, hstrerror( h_errno ) );
 			socket_connect_bail( sock );
 			return;
 		}
@@ -381,7 +381,6 @@ static void
 socket_connect_one( conn_t *sock )
 {
 	int s;
-	ushort port;
 #ifdef HAVE_IPV6
 	struct addrinfo *ai;
 #else
@@ -400,18 +399,13 @@ socket_connect_one( conn_t *sock )
 		return;
 	}
 
-	port = sock->conf->port ? sock->conf->port :
-#ifdef HAVE_LIBSSL
-	       sock->conf->use_imaps ? 993 :
-#endif
-	       143;
 #ifdef HAVE_IPV6
 	if (ai->ai_family == AF_INET6) {
 		struct sockaddr_in6 *in6 = ((struct sockaddr_in6 *)ai->ai_addr);
 		char sockname[64];
-		in6->sin6_port = htons( port );
+		in6->sin6_port = htons( sock->conf->port );
 		nfasprintf( &sock->name, "%s ([%s]:%hu)",
-		            sock->conf->host, inet_ntop( AF_INET6, &in6->sin6_addr, sockname, sizeof(sockname) ), port );
+		            sock->conf->host, inet_ntop( AF_INET6, &in6->sin6_addr, sockname, sizeof(sockname) ), sock->conf->port );
 	} else
 #endif
 	{
@@ -421,9 +415,9 @@ socket_connect_one( conn_t *sock )
 		in->sin_family = AF_INET;
 		in->sin_addr.s_addr = *((int *)*sock->curr_addr);
 #endif
-		in->sin_port = htons( port );
+		in->sin_port = htons( sock->conf->port );
 		nfasprintf( &sock->name, "%s (%s:%hu)",
-		            sock->conf->host, inet_ntoa( in->sin_addr ), port );
+		            sock->conf->host, inet_ntoa( in->sin_addr ), sock->conf->port );
 	}
 
 #ifdef HAVE_IPV6

+ 0 - 1
src/socket.h

@@ -34,7 +34,6 @@ typedef struct server_conf {
 	int port;
 #ifdef HAVE_LIBSSL
 	char *cert_file;
-	char use_imaps;
 	char use_sslv2, use_sslv3, use_tlsv1, use_tlsv11, use_tlsv12;
 
 	/* these are actually variables and are leaked at the end */