Skip to content

Commit

Permalink
director: Change request callback to take mail_host parameter
Browse files Browse the repository at this point in the history
This allows accessing the IP address both as struct and as string without
any conversions.
  • Loading branch information
sirainen committed Nov 7, 2017
1 parent 5814efc commit 0b04f0a
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 7 deletions.
2 changes: 1 addition & 1 deletion src/director/director-request.c
Expand Up @@ -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);
Expand Down
2 changes: 1 addition & 1 deletion src/director/director-request.h
Expand Up @@ -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,
Expand Down
11 changes: 6 additions & 5 deletions src/director/login-connection.c
Expand Up @@ -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"

Expand Down Expand Up @@ -132,15 +133,15 @@ 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;
struct director *dir = request->conn->dir;
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)
Expand All @@ -153,18 +154,18 @@ 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);

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);
}
Expand Down

0 comments on commit 0b04f0a

Please sign in to comment.