From: Aki Tuomi Date: Wed, 21 Nov 2018 11:04:33 +0000 (+0200) Subject: lib: connection - Add connection_init_client_fd X-Git-Tag: 2.3.9~1068 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c258851975d1b90682c5d86b76ecc7269e1b8991;p=thirdparty%2Fdovecot%2Fcore.git lib: connection - Add connection_init_client_fd Simplifies testing --- diff --git a/src/lib/connection.c b/src/lib/connection.c index f62ff4abe1..f8defde590 100644 --- a/src/lib/connection.c +++ b/src/lib/connection.c @@ -280,6 +280,31 @@ void connection_init_server(struct connection_list *list, connection_init_streams(conn); } +void connection_init_client_fd(struct connection_list *list, + struct connection *conn, const char *name, + int fd_in, int fd_out) +{ + i_assert(name != NULL); + i_assert(list->set.client); + + connection_init(list, conn); + + conn->name = i_strdup(name); + event_set_append_log_prefix(conn->event, + t_strdup_printf("(%s): ", conn->name)); + conn->fd_in = fd_in; + conn->fd_out = fd_out; + + struct event_passthrough *e = event_create_passthrough(conn->event)-> + set_name("server_connection_connected"); + /* fd_out differs from fd_in only for stdin/stdout. Keep the logging + output nice and clean by logging only the fd_in. If it's 0, it'll + also be obvious that fd_out=1. */ + e_debug(e->event(), "Client connected (fd=%d)", fd_in); + + connection_client_connected(conn, TRUE); +} + void connection_init_client_ip_from(struct connection_list *list, struct connection *conn, const struct ip_addr *ip, in_port_t port, diff --git a/src/lib/connection.h b/src/lib/connection.h index c5ffd18c93..9bac17097a 100644 --- a/src/lib/connection.h +++ b/src/lib/connection.h @@ -140,6 +140,8 @@ void connection_init_client_ip_from(struct connection_list *list, const struct ip_addr *my_ip) ATTR_NULL(5); void connection_init_client_unix(struct connection_list *list, struct connection *conn, const char *path); +void connection_init_client_fd(struct connection_list *list, + struct connection *conn, const char *name, int fd_int, int fd_out); void connection_init_from_streams(struct connection_list *list, struct connection *conn, const char *name, struct istream *input, struct ostream *output);