Lines Matching refs:lookup
7 #include "access-lookup.h"
26 static void access_lookup_input(struct access_lookup *lookup)
32 ret = read(lookup->fd, buf, sizeof(buf));
34 i_error("read(%s) failed: %m", lookup->path);
42 i_error("access(%s): Invalid input", lookup->path);
45 lookup->refcount++;
46 lookup->callback(success, lookup->context);
47 if (lookup->refcount > 1)
48 access_lookup_destroy(&lookup);
49 access_lookup_destroy(&lookup);
52 static void access_lookup_timeout(struct access_lookup *lookup)
54 i_error("access(%s): Timed out while waiting for reply", lookup->path);
56 lookup->refcount++;
57 lookup->callback(FALSE, lookup->context);
58 if (lookup->refcount > 1)
59 access_lookup_destroy(&lookup);
60 access_lookup_destroy(&lookup);
67 struct access_lookup *lookup;
89 lookup = i_new(struct access_lookup, 1);
90 lookup->refcount = 1;
91 lookup->fd = fd;
92 lookup->path = i_strdup(path);
93 lookup->io = io_add(fd, IO_READ, access_lookup_input, lookup);
94 lookup->to = timeout_add(ACCESS_LOOKUP_TIMEOUT_MSECS,
95 access_lookup_timeout, lookup);
96 lookup->callback = callback;
97 lookup->context = context;
98 return lookup;
103 struct access_lookup *lookup = *_lookup;
105 i_assert(lookup->refcount > 0);
106 if (--lookup->refcount > 0)
111 timeout_remove(&lookup->to);
112 io_remove(&lookup->io);
113 if (close(lookup->fd) < 0)
114 i_error("close(%s) failed: %m", lookup->path);
116 i_free(lookup->path);
117 i_free(lookup);