]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib: connection - Add connection_init_client_fd
authorAki Tuomi <aki.tuomi@dovecot.fi>
Wed, 21 Nov 2018 11:04:33 +0000 (13:04 +0200)
committerAki Tuomi <aki.tuomi@dovecot.fi>
Tue, 27 Nov 2018 17:30:40 +0000 (19:30 +0200)
Simplifies testing

src/lib/connection.c
src/lib/connection.h

index f62ff4abe1469a1e1236d805e37d598f10328a53..f8defde590c54ce05ad2b0d2c5d987edbb054e44 100644 (file)
@@ -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,
index c5ffd18c938429b5ddaec90187b612a80a4d8581..9bac17097a1b5f4f1e14f24134815d82fe42854d 100644 (file)
@@ -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);