auth-connection.c revision c54f8888b674639d69f3d13b8ac2910900a9dbbc
2454dfa32c93c20a8522c6ed42fe057baaac9f9aStephan Bosch/* Copyright (c) 2010-2011 Dovecot authors, see the included COPYING file */
82ed69779f49bd71ef1b570ce8aca67d357dbee8Timo Sirainenstatic struct auth_connection *auth_connections;
fcfb528483369975066c6adf1c55c16e6fb6e91fTimo Sirainenstatic void auth_connection_disconnected(struct auth_connection **conn);
1b97a59edb073e9a89ac43a21a9abe5d590d4a56Timo Sirainenstatic void auth_connection_input(struct auth_connection *conn)
fcfb528483369975066c6adf1c55c16e6fb6e91fTimo Sirainen /* disconnected */
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen i_error("Auth server disconnected unexpectedly");
fcfb528483369975066c6adf1c55c16e6fb6e91fTimo Sirainen /* buffer full */
9bd08aa09ea0cbd7b221aae9fc0534eb762d3de6Timo Sirainen i_error("BUG: Auth server sent us more than %d bytes",
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen while ((line = i_stream_next_line(conn->input)) != NULL) {
6a7f64562ddd0dd2fec755ec4e9c9afde8e85cf1Timo Sirainenstruct auth_connection *auth_connection_init(const char *path)
6a7f64562ddd0dd2fec755ec4e9c9afde8e85cf1Timo Sirainenvoid auth_connection_set_callback(struct auth_connection *conn,
6a7f64562ddd0dd2fec755ec4e9c9afde8e85cf1Timo Sirainenint auth_connection_connect(struct auth_connection *conn)
6a7f64562ddd0dd2fec755ec4e9c9afde8e85cf1Timo Sirainen conn->fd = net_connect_unix_with_retries(conn->path, 1000);
6a7f64562ddd0dd2fec755ec4e9c9afde8e85cf1Timo Sirainen i_error("connect(%s) failed: %m", conn->path);
6a7f64562ddd0dd2fec755ec4e9c9afde8e85cf1Timo Sirainen conn->input = i_stream_create_fd(conn->fd, AUTH_CLIENT_MAX_LINE_LENGTH,
1b97a59edb073e9a89ac43a21a9abe5d590d4a56Timo Sirainen conn->output = o_stream_create_fd(conn->fd, (size_t)-1, FALSE);
1b97a59edb073e9a89ac43a21a9abe5d590d4a56Timo Sirainen conn->io = io_add(conn->fd, IO_READ, auth_connection_input, conn);
dc0474dc9d5652d76cb41f439844dd80c8b96642Timo Sirainenvoid auth_connection_deinit(struct auth_connection **_conn)
d6693dac50e4fb547d8dc61b85820f1761a33575Timo Sirainenstatic void auth_connection_disconnected(struct auth_connection **_conn)
d6693dac50e4fb547d8dc61b85820f1761a33575Timo Sirainen /* notify callback. it should deinit this connection */
d6693dac50e4fb547d8dc61b85820f1761a33575Timo Sirainenvoid auth_connection_send(struct auth_connection *conn,
d6693dac50e4fb547d8dc61b85820f1761a33575Timo Sirainen (void)o_stream_send(conn->output, data, size);