Lines Matching refs:lookup
17 #include "access-lookup.h"
62 static void login_access_lookup_next(struct login_access_lookup *lookup);
182 static void login_access_lookup_free(struct login_access_lookup *lookup)
184 io_remove(&lookup->io);
185 if (lookup->access != NULL)
186 access_lookup_destroy(&lookup->access);
187 if (lookup->conn.fd != -1) {
188 if (close(lookup->conn.fd) < 0)
193 p_strsplit_free(default_pool, lookup->sockets);
194 i_free(lookup);
199 struct login_access_lookup *lookup = context;
203 *lookup->next_socket,
204 net_ip2addr(&lookup->conn.remote_ip));
205 login_access_lookup_free(lookup);
207 lookup->next_socket++;
208 login_access_lookup_next(lookup);
212 static void login_access_lookup_next(struct login_access_lookup *lookup)
214 if (*lookup->next_socket == NULL) {
216 io_remove(&lookup->io);
217 client_connected_finish(&lookup->conn);
218 lookup->conn.fd = -1;
219 login_access_lookup_free(lookup);
222 lookup->access = access_lookup(*lookup->next_socket, lookup->conn.fd,
224 login_access_callback, lookup);
225 if (lookup->access == NULL)
226 login_access_lookup_free(lookup);
229 static void client_input_error(struct login_access_lookup *lookup)
234 ret = recv(lookup->conn.fd, &c, 1, MSG_PEEK);
236 i_info("access(%s): Client disconnected during lookup (rip=%s)",
237 *lookup->next_socket,
238 net_ip2addr(&lookup->conn.remote_ip));
239 login_access_lookup_free(lookup);
241 /* actual input. stop listening until lookup is done. */
242 io_remove(&lookup->io);
250 struct login_access_lookup *lookup;
269 lookup = i_new(struct login_access_lookup, 1);
270 lookup->conn = *conn;
271 lookup->io = io_add(conn->fd, IO_READ, client_input_error, lookup);
272 lookup->sockets = p_strsplit_spaces(default_pool, access_sockets, " ");
273 lookup->next_socket = lookup->sockets;
275 login_access_lookup_next(lookup);