Mercurial > dovecot > core-2.2
changeset 22147:edc9369f9d60
lib: Use unix streams with connection when using unix socket
This makes it easier to send file descriptors over connection
author | Aki Tuomi <aki.tuomi@dovecot.fi> |
---|---|
date | Wed, 31 May 2017 14:39:55 +0300 |
parents | 88d2ad3f2463 |
children | 3272674e4e5d |
files | src/lib/connection.c src/lib/connection.h |
diffstat | 2 files changed, 16 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib/connection.c Tue May 30 21:57:06 2017 +0300 +++ b/src/lib/connection.c Wed May 31 14:39:55 2017 +0300 @@ -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" @@ -130,16 +132,24 @@ 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); } @@ -212,6 +222,7 @@ 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++;