config-connection.c revision a64adf62fa33f2463a86f990217b0c9078531a40
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen/* Copyright (C) 2005 Timo Sirainen */
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainenstatic const char *const *
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainenconfig_connection_next_line(struct config_connection *conn)
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainenstatic void config_connection_request(struct config_connection *conn,
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen const char *const *args)
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen /* <process> [<args>] */
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen o_stream_send(conn->output, str_data(config_string),
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainenstatic void config_connection_input(void *context)
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen i_error("BUG: Config client connection sent too much data");
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen i_error("Config client not compatible with this server "
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen "(mixed old and new binaries?)");
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen while ((args = config_connection_next_line(conn)) != NULL) {
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainenstruct config_connection *config_connection_create(int fd)
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen conn->input = i_stream_create_fd(fd, MAX_INBUF_SIZE, FALSE);
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen conn->output = o_stream_create_fd(fd, (size_t)-1, FALSE);
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen conn->io = io_add(fd, IO_READ, config_connection_input, conn);
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainenvoid config_connection_destroy(struct config_connection *conn)
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainenvoid config_connection_dump_request(int fd, const char *service)