/* Copyright (c) 2010-2018 Dovecot authors, see the included COPYING file */
#include "lib.h"
#include "ioloop.h"
#include "fdpass.h"
#include "write-full.h"
#include "restrict-access.h"
#include "master-service.h"
#include <unistd.h>
#include <syslog.h>
#include <tcpd.h>
struct tcpwrap_client {
int fd;
};
/* for tcpwrap library */
const char *daemon_name)
{
if (!hosts_access(&request))
else
exit(0);
}
{
if (ret <= 0) {
i_error("fd_read() failed: %m");
} else {
i_error("Invalid input from client");
}
}
{
}
{
client);
return client;
}
{
i_error("close() failed: %m");
}
{
if (tcpwrap_client != NULL) {
i_error("tcpwrap must be configured with client_limit=1");
return;
}
}
{
if (master_getopt(master_service) > 0)
return FATAL_DEFAULT;
if (tcpwrap_client != NULL)
return 0;
}