access-lookup.c revision cb78bd2ad54e402c1f53930b41e2295683bda90b
24e5e4526d8f5cbc056ab97fd0d154d0936d7a5eTimo Sirainen/* Copyright (c) 2010-2012 Dovecot authors, see the included COPYING file */
111a7dda02defa4d612468cfc3c40da5240645afTimo Sirainenstatic void access_lookup_input(struct access_lookup *lookup)
db0735f9b388c5bcfb781b1b25015e898d63d953Timo Sirainen } else if (ret == 0) {
24e5e4526d8f5cbc056ab97fd0d154d0936d7a5eTimo Sirainen /* connection close -> no success */
24e5e4526d8f5cbc056ab97fd0d154d0936d7a5eTimo Sirainen } else if (ret == 2 && buf[0] == '0' && buf[1] == '\n') {
24e5e4526d8f5cbc056ab97fd0d154d0936d7a5eTimo Sirainen /* no success */
24e5e4526d8f5cbc056ab97fd0d154d0936d7a5eTimo Sirainen } else if (ret == 2 && buf[0] == '1' && buf[1] == '\n') {
24e5e4526d8f5cbc056ab97fd0d154d0936d7a5eTimo Sirainen i_error("access(%s): Invalid input", lookup->path);
24e5e4526d8f5cbc056ab97fd0d154d0936d7a5eTimo Sirainenstatic void access_lookup_timeout(struct access_lookup *lookup)
24e5e4526d8f5cbc056ab97fd0d154d0936d7a5eTimo Sirainen i_error("access(%s): Timed out while waiting for reply", lookup->path);
66c0f96d704f09c88dd03b0ee13a3e9711ffe593Timo Sirainenaccess_lookup(const char *path, int client_fd, const char *daemon_name,
24e5e4526d8f5cbc056ab97fd0d154d0936d7a5eTimo Sirainen access_lookup_callback_t *callback, void *context)
7e209b78ca757294dbbc15604c88673b3a6b0c39Timo Sirainen const char *cmd;
111a7dda02defa4d612468cfc3c40da5240645afTimo Sirainen ret = fd_send(fd, client_fd, cmd, strlen(cmd));
db0735f9b388c5bcfb781b1b25015e898d63d953Timo Sirainen i_error("fd_send(%s) didn't write enough bytes", path);
24e5e4526d8f5cbc056ab97fd0d154d0936d7a5eTimo Sirainen lookup->io = io_add(fd, IO_READ, access_lookup_input, lookup);
24e5e4526d8f5cbc056ab97fd0d154d0936d7a5eTimo Sirainen lookup->to = timeout_add(ACCESS_LOOKUP_TIMEOUT_MSECS,
24e5e4526d8f5cbc056ab97fd0d154d0936d7a5eTimo Sirainenvoid access_lookup_destroy(struct access_lookup **_lookup)
bcdb6c0bd2e7dbb34b306d3d8c2383a7d7654612Timo Sirainen i_error("close(%s) failed: %m", lookup->path);