Skip to content

Commit

Permalink
lib: connection - Assign initial file descriptors in shared connectio…
Browse files Browse the repository at this point in the history
…n_init_full().

This makes the file descriptors (if available) usable in the shared
connection_init_full() function.
  • Loading branch information
stephanbosch committed Mar 1, 2019
1 parent 166a218 commit 0e06e1d
Showing 1 changed file with 15 additions and 17 deletions.
32 changes: 15 additions & 17 deletions src/lib/connection.c
Expand Up @@ -305,12 +305,13 @@ static void connection_client_connected(struct connection *conn, bool success)
}
}

void connection_init(struct connection_list *list, struct connection *conn,
const char *name)
static void
connection_init_full(struct connection_list *list, struct connection *conn,
const char *name, int fd_in, int fd_out)
{
conn->ioloop = current_ioloop;
conn->fd_in = -1;
conn->fd_out = -1;
conn->fd_in = fd_in;
conn->fd_out = fd_out;
conn->disconnected = TRUE;

i_free(conn->name);
Expand All @@ -337,19 +338,23 @@ void connection_init(struct connection_list *list, struct connection *conn,
connection_set_default_handlers(conn);
}

void connection_init(struct connection_list *list, struct connection *conn,
const char *name)
{
connection_init_full(list, conn, name, -1, -1);
}

void connection_init_server(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, name);
connection_init_full(list, conn, name, fd_in, fd_out);

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("client_connection_connected");
Expand All @@ -368,12 +373,10 @@ void connection_init_client_fd(struct connection_list *list,
i_assert(name != NULL);
i_assert(list->set.client);

connection_init(list, conn, name);
connection_init_full(list, conn, name, fd_in, fd_out);

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");
Expand All @@ -397,8 +400,6 @@ void connection_init_client_ip_from(struct connection_list *list,

connection_init(list, conn, name);

conn->fd_in = conn->fd_out = -1;

conn->remote_ip = *ip;
conn->remote_port = port;

Expand Down Expand Up @@ -429,7 +430,6 @@ void connection_init_client_unix(struct connection_list *list,

connection_init(list, conn, path);

conn->fd_in = conn->fd_out = -1;
conn->unix_socket = TRUE;

event_field_clear(conn->event, "ip");
Expand All @@ -448,10 +448,8 @@ void connection_init_from_streams(struct connection_list *list,
{
i_assert(name != NULL);

connection_init(list, conn, name);

conn->fd_in = i_stream_get_fd(input);
conn->fd_out = o_stream_get_fd(output);
connection_init_full(list, conn, name,
i_stream_get_fd(input), o_stream_get_fd(output));

i_assert(conn->fd_in >= 0);
i_assert(conn->fd_out >= 0);
Expand Down

0 comments on commit 0e06e1d

Please sign in to comment.