Mercurial > dovecot > core-2.2
changeset 9438:27dfd1f5d46b HEAD
log, lib-master: More fifo handling fixes.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Wed, 03 Jun 2009 17:19:53 -0400 |
parents | e18fb0a361ef |
children | 03ef1dd538fe |
files | src/lib-master/master-service.c src/log/log-connection.c src/log/log-connection.h src/log/main.c |
diffstat | 4 files changed, 11 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-master/master-service.c Wed Jun 03 17:08:26 2009 -0400 +++ b/src/lib-master/master-service.c Wed Jun 03 17:19:53 2009 -0400 @@ -488,11 +488,11 @@ as the connection fd and stop the listener. */ io_remove(&l->io); conn.fd = dup(l->fd); + conn.listen_fd = l->fd; if (conn.fd == -1) { i_error("dup() failed: %m"); return; } - io_remove(&l->io); } conn.ssl = l->ssl; net_set_nonblock(conn.fd, TRUE);
--- a/src/log/log-connection.c Wed Jun 03 17:08:26 2009 -0400 +++ b/src/log/log-connection.c Wed Jun 03 17:19:53 2009 -0400 @@ -160,13 +160,10 @@ handshake.prefix_len); *data += sizeof(handshake) + handshake.prefix_len; } - if (strcmp(log->prefix, MASTER_LOG_PREFIX_NAME) == 0) { - if (log->fd != MASTER_LISTEN_FD_FIRST) { - i_error("Received master prefix in handshake " - "from non-master fd %d", log->fd); - return FALSE; - } - log->master = TRUE; + if (strcmp(log->prefix, MASTER_LOG_PREFIX_NAME) == 0 && !log->master) { + i_error("Received master prefix in handshake " + "from non-master fd %d", log->fd); + return FALSE; } log->handshaked = TRUE; return TRUE; @@ -202,7 +199,7 @@ } } -struct log_connection *log_connection_create(int fd) +struct log_connection *log_connection_create(int fd, bool master) { struct log_connection *log; @@ -211,6 +208,7 @@ log->io = io_add(fd, IO_READ, log_connection_input, log); log->clients = hash_table_create(default_pool, default_pool, 0, NULL, NULL); + log->master = master; array_idx_set(&logs_by_fd, fd, &log); DLLIST_PREPEND(&log_connections, log);
--- a/src/log/log-connection.h Wed Jun 03 17:08:26 2009 -0400 +++ b/src/log/log-connection.h Wed Jun 03 17:19:53 2009 -0400 @@ -1,7 +1,7 @@ #ifndef LOG_CONNECTION_H #define LOG_CONNECTION_H -struct log_connection *log_connection_create(int fd); +struct log_connection *log_connection_create(int fd, bool master); void log_connection_destroy(struct log_connection *log); void log_connections_init(void);
--- a/src/log/main.c Wed Jun 03 17:08:26 2009 -0400 +++ b/src/log/main.c Wed Jun 03 17:19:53 2009 -0400 @@ -40,7 +40,9 @@ static void client_connected(const struct master_service_connection *conn) { - log_connection_create(conn->fd); + bool master = conn->listen_fd == MASTER_LISTEN_FD_FIRST; + + log_connection_create(conn->fd, master); } int main(int argc, char *argv[])