changeset 22644:2ed6735ffc7a

director: Change request callback to take mail_host parameter This allows accessing the IP address both as struct and as string without any conversions.
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Sat, 04 Nov 2017 02:05:26 +0200
parents 6e235143e177
children 57e7fafb10c5
files src/director/director-request.c src/director/director-request.h src/director/login-connection.c
diffstat 3 files changed, 8 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/src/director/director-request.c	Sat Nov 04 01:59:27 2017 +0200
+++ b/src/director/director-request.c	Sat Nov 04 02:05:26 2017 +0200
@@ -325,7 +325,7 @@
 	i_assert(!user->weak);
 	director_update_user(dir, dir->self_host, user);
 	T_BEGIN {
-		request->callback(&user->host->ip, user->host->hostname,
+		request->callback(user->host, user->host->hostname,
 				  NULL, request->context);
 	} T_END;
 	director_request_free(request);
--- a/src/director/director-request.h	Sat Nov 04 01:59:27 2017 +0200
+++ b/src/director/director-request.h	Sat Nov 04 02:05:26 2017 +0200
@@ -5,7 +5,7 @@
 struct director_request;
 
 typedef void
-director_request_callback(const struct ip_addr *ip, const char *hostname,
+director_request_callback(const struct mail_host *host, const char *hostname,
 			  const char *errormsg, void *context);
 
 void director_request(struct director *dir, const char *username,
--- a/src/director/login-connection.c	Sat Nov 04 01:59:27 2017 +0200
+++ b/src/director/login-connection.c	Sat Nov 04 02:05:26 2017 +0200
@@ -11,6 +11,7 @@
 #include "master-service.h"
 #include "director.h"
 #include "director-request.h"
+#include "mail-host.h"
 #include "auth-connection.h"
 #include "login-connection.h"
 
@@ -132,7 +133,7 @@
 }
 
 static void
-login_host_callback(const struct ip_addr *ip, const char *hostname,
+login_host_callback(const struct mail_host *host, const char *hostname,
 		    const char *errormsg, void *context)
 {
 	struct login_host_request *request = context;
@@ -140,7 +141,7 @@
 	const char *line, *line_params;
 	unsigned int secs;
 
-	if (ip == NULL) {
+	if (host == NULL) {
 		if (strncmp(request->line, "OK\t", 3) == 0)
 			line_params = request->line + 3;
 		else if (strncmp(request->line, "PASS\t", 5) == 0)
@@ -153,7 +154,7 @@
 		line = t_strconcat("FAIL\t", t_strcut(line_params, '\t'),
 				   "\ttemp", NULL);
 	} else if (request->director_proxy_maybe &&
-		   login_host_request_is_self(request, ip)) {
+		   login_host_request_is_self(request, &host->ip)) {
 		line = request->line;
 	} else {
 		string_t *str = t_str_new(64);
@@ -161,10 +162,10 @@
 		secs = dir->set->director_user_expire / 2;
 		str_printfa(str, "%s\tproxy_refresh=%u\t", request->line, secs);
 		if (hostname == NULL || hostname[0] == '\0')
-			str_printfa(str, "host=%s", net_ip2addr(ip));
+			str_printfa(str, "host=%s", host->ip_str);
 		else {
 			str_printfa(str, "host=%s\thostip=%s",
-				    hostname, net_ip2addr(ip));
+				    hostname, host->ip_str);
 		}
 		line = str_c(str);
 	}