From: Timo Sirainen Date: Sat, 4 Nov 2017 00:05:26 +0000 (+0200) Subject: director: Change request callback to take mail_host parameter X-Git-Tag: 2.2.34~245 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0b04f0a0774ade79933da4a0dbc8c52ab39c0874;p=thirdparty%2Fdovecot%2Fcore.git director: Change request callback to take mail_host parameter This allows accessing the IP address both as struct and as string without any conversions. --- diff --git a/src/director/director-request.c b/src/director/director-request.c index 66d2cd5067..2800308b7f 100644 --- a/src/director/director-request.c +++ b/src/director/director-request.c @@ -325,7 +325,7 @@ bool director_request_continue(struct director_request *request) 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); diff --git a/src/director/director-request.h b/src/director/director-request.h index f8ec74a5cd..e6fff802df 100644 --- a/src/director/director-request.h +++ b/src/director/director-request.h @@ -5,7 +5,7 @@ struct director; 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, diff --git a/src/director/login-connection.c b/src/director/login-connection.c index f55519cd5b..7a979a6bf7 100644 --- a/src/director/login-connection.c +++ b/src/director/login-connection.c @@ -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 bool login_host_request_is_self(struct login_host_request *request, } 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 @@ login_host_callback(const struct ip_addr *ip, const char *hostname, 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 @@ login_host_callback(const struct ip_addr *ip, const char *hostname, 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 @@ login_host_callback(const struct ip_addr *ip, const char *hostname, 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); }