client-common.c revision c4ec7cb598805b1387dc3aab59ec8f32d8cc24e1
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen/* Copyright (c) 2002-2017 Dovecot authors, see the included COPYING file */
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainenstatic unsigned int clients_count = 0;
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainenstatic ARRAY(struct login_client_module_hooks) module_hooks = ARRAY_INIT;
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainenvoid login_client_hooks_add(struct module *module,
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainenvoid login_client_hooks_remove(const struct login_client_hooks *hooks)
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen const struct login_client_module_hooks *module_hook;
} T_END;
unsigned int secs;
const char *const *net;
unsigned int bits;
return FALSE;
return TRUE;
return FALSE;
struct client *
void **other_sets)
return client;
return TRUE;
return FALSE;
void client_destroy_oldest(void)
void clients_destroy_all(void)
int fd_ssl;
int ret;
if (ret > 0) {
unsigned int clients_get_count(void)
return clients_count;
const char *value)
static const struct var_expand_table *
sizeof(login_var_expand_empty_tab));
const char *ssl_state =
const char *ssl_error =
return tab;
char key;
str++;
return TRUE;
return FALSE;
const char **value_r,
field_name_len) == 0 &&
const char *error;
unsigned int pos;
*e, error);
if (have_username_key(*e)) {
&error) <= 0) {
T_BEGIN {
} T_END;
T_BEGIN {
} T_END;
T_BEGIN {
} T_END;
return t_strdup_printf(
return t_strdup_printf(
const char *text)
return FALSE;
return FALSE;
return TRUE;
return TRUE;
void client_common_init(void)
void client_common_deinit(void)