Skip to content

Commit

Permalink
lib: Use unix streams with connection when using unix socket
Browse files Browse the repository at this point in the history
This makes it easier to send file descriptors over connection
  • Loading branch information
cmouse authored and villesavolainen committed Jun 12, 2017
1 parent 1a1c693 commit ee339bb
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 4 deletions.
19 changes: 15 additions & 4 deletions src/lib/connection.c
Expand Up @@ -3,7 +3,9 @@
#include "lib.h"
#include "ioloop.h"
#include "istream.h"
#include "istream-unix.h"
#include "ostream.h"
#include "ostream-unix.h"
#include "iostream.h"
#include "net.h"
#include "strescape.h"
Expand Down Expand Up @@ -130,16 +132,24 @@ static void connection_init_streams(struct connection *conn)
conn->version_received = set->major_version == 0;

if (set->input_max_size != 0) {
conn->input = i_stream_create_fd(conn->fd_in,
set->input_max_size, FALSE);
if (conn->unix_socket)
conn->input = i_stream_create_unix(conn->fd_in,
set->input_max_size);
else
conn->input = i_stream_create_fd(conn->fd_in,
set->input_max_size, FALSE);
i_stream_set_name(conn->input, conn->name);
conn->io = io_add_istream(conn->input, *conn->list->v.input, conn);
} else {
conn->io = io_add(conn->fd_in, IO_READ, *conn->list->v.input, conn);
}
if (set->output_max_size != 0) {
conn->output = o_stream_create_fd(conn->fd_out,
set->output_max_size, FALSE);
if (conn->unix_socket)
conn->output = o_stream_create_unix(conn->fd_out,
set->output_max_size);
else
conn->output = o_stream_create_fd(conn->fd_out,
set->output_max_size, FALSE);
o_stream_set_no_error_handling(conn->output, TRUE);
o_stream_set_name(conn->output, conn->name);
}
Expand Down Expand Up @@ -212,6 +222,7 @@ void connection_init_client_unix(struct connection_list *list,
conn->fd_in = conn->fd_out = -1;
conn->list = list;
conn->name = i_strdup(path);
conn->unix_socket = TRUE;

DLLIST_PREPEND(&list->connections, conn);
list->connections_count++;
Expand Down
1 change: 1 addition & 0 deletions src/lib/connection.h
Expand Up @@ -99,6 +99,7 @@ struct connection {
enum connection_disconnect_reason disconnect_reason;

unsigned int version_received:1;
unsigned int unix_socket:1;
};

struct connection_list {
Expand Down

0 comments on commit ee339bb

Please sign in to comment.