annotate src/lib/connection.h @ 23007:36e01285b5b8

lib: buffer - Improve header comment for buffer_insert() and buffer_delete().
author Stephan Bosch <stephan.bosch@dovecot.fi>
date Mon, 18 Mar 2019 00:52:37 +0100
parents f746d87d3aff
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
14785
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1 #ifndef CONNECTION_H
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
2 #define CONNECTION_H
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
3
15187
02451e967a06 Renamed network.[ch] to net.[ch].
Timo Sirainen <tss@iki.fi>
parents: 14908
diff changeset
4 #include "net.h"
14785
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
5
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
6 struct connection;
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
7
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
8 enum connection_behavior {
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
9 CONNECTION_BEHAVIOR_DESTROY = 0,
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
10 CONNECTION_BEHAVIOR_ALLOW
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
11 };
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
12
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
13 enum connection_disconnect_reason {
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
14 /* not disconnected yet */
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
15 CONNECTION_DISCONNECT_NOT = 0,
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
16 /* normal requested disconnection */
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
17 CONNECTION_DISCONNECT_DEINIT,
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
18 /* input buffer full */
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
19 CONNECTION_DISCONNECT_BUFFER_FULL,
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
20 /* connection got disconnected */
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
21 CONNECTION_DISCONNECT_CONN_CLOSED,
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
22 /* connect() timed out */
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
23 CONNECTION_DISCONNECT_CONNECT_TIMEOUT,
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
24 /* remote didn't send input */
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
25 CONNECTION_DISCONNECT_IDLE_TIMEOUT
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
26 };
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
27
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
28 struct connection_vfuncs {
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
29 void (*destroy)(struct connection *conn);
18656
6f167f2e550d lib: connection API: Added delayed_unix_client_connected_callback setting.
Timo Sirainen <tss@iki.fi>
parents: 17246
diff changeset
30 /* For UNIX socket clients this gets called immediately (unless
6f167f2e550d lib: connection API: Added delayed_unix_client_connected_callback setting.
Timo Sirainen <tss@iki.fi>
parents: 17246
diff changeset
31 delayed_unix_client_connected_callback=TRUE) with success=TRUE,
6f167f2e550d lib: connection API: Added delayed_unix_client_connected_callback setting.
Timo Sirainen <tss@iki.fi>
parents: 17246
diff changeset
32 for IP connections it gets called later:
14908
deb47efdc006 connection API: Fixed connected() callback to actually allow detecting failed connects.
Timo Sirainen <tss@iki.fi>
parents: 14840
diff changeset
33
deb47efdc006 connection API: Fixed connected() callback to actually allow detecting failed connects.
Timo Sirainen <tss@iki.fi>
parents: 14840
diff changeset
34 If connect() fails, sets success=FALSE and errno. Streams aren't
deb47efdc006 connection API: Fixed connected() callback to actually allow detecting failed connects.
Timo Sirainen <tss@iki.fi>
parents: 14840
diff changeset
35 initialized in that situation either. destroy() is called after
deb47efdc006 connection API: Fixed connected() callback to actually allow detecting failed connects.
Timo Sirainen <tss@iki.fi>
parents: 14840
diff changeset
36 the callback. */
deb47efdc006 connection API: Fixed connected() callback to actually allow detecting failed connects.
Timo Sirainen <tss@iki.fi>
parents: 14840
diff changeset
37 void (*client_connected)(struct connection *conn, bool success);
14785
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
38
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
39 /* implement one of the input*() methods.
16729
ae309d070b44 Comment update.
Timo Sirainen <tss@iki.fi>
parents: 15234
diff changeset
40 They return 1 = ok, continue. 0 = ok, but stop processing more
ae309d070b44 Comment update.
Timo Sirainen <tss@iki.fi>
parents: 15234
diff changeset
41 lines, -1 = error, disconnect the client. */
14785
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
42 void (*input)(struct connection *conn);
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
43 int (*input_line)(struct connection *conn, const char *line);
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
44 int (*input_args)(struct connection *conn, const char *const *args);
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
45 };
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
46
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
47 struct connection_settings {
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
48 const char *service_name_in;
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
49 const char *service_name_out;
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
50 unsigned int major_version, minor_version;
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
51
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
52 unsigned int client_connect_timeout_msecs;
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
53 unsigned int input_idle_timeout_secs;
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
54
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
55 size_t input_max_size;
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
56 size_t output_max_size;
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
57 enum connection_behavior input_full_behavior;
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
58
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
59 bool client;
14734
dfe6f9a790bc Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
60 bool dont_send_version;
21160
66fad2161837 lib: Add connection.allow_empty_args_input
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20625
diff changeset
61 /* By default when only input_args() is used, or when
66fad2161837 lib: Add connection.allow_empty_args_input
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20625
diff changeset
62 connection_input_line_default() is used, empty lines aren't allowed
66fad2161837 lib: Add connection.allow_empty_args_input
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20625
diff changeset
63 since it would result in additional args[0] == NULL check. Setting
66fad2161837 lib: Add connection.allow_empty_args_input
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20625
diff changeset
64 this to TRUE passes it through instead of logging an error. */
66fad2161837 lib: Add connection.allow_empty_args_input
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20625
diff changeset
65 bool allow_empty_args_input;
18656
6f167f2e550d lib: connection API: Added delayed_unix_client_connected_callback setting.
Timo Sirainen <tss@iki.fi>
parents: 17246
diff changeset
66 /* Don't call client_connected() immediately on
6f167f2e550d lib: connection API: Added delayed_unix_client_connected_callback setting.
Timo Sirainen <tss@iki.fi>
parents: 17246
diff changeset
67 connection_client_connect() with UNIX sockets. This is mainly
6f167f2e550d lib: connection API: Added delayed_unix_client_connected_callback setting.
Timo Sirainen <tss@iki.fi>
parents: 17246
diff changeset
68 to make the functionality identical with inet sockets, which may
6f167f2e550d lib: connection API: Added delayed_unix_client_connected_callback setting.
Timo Sirainen <tss@iki.fi>
parents: 17246
diff changeset
69 simplify the calling code. */
6f167f2e550d lib: connection API: Added delayed_unix_client_connected_callback setting.
Timo Sirainen <tss@iki.fi>
parents: 17246
diff changeset
70 bool delayed_unix_client_connected_callback;
18869
697c6f04baca lib: Added unix_client_connect_msecs setting to connection API.
Timo Sirainen <tss@iki.fi>
parents: 18656
diff changeset
71 /* If connect() to UNIX socket fails with EAGAIN, retry for this many
697c6f04baca lib: Added unix_client_connect_msecs setting to connection API.
Timo Sirainen <tss@iki.fi>
parents: 18656
diff changeset
72 milliseconds before giving up (0 = try once) */
697c6f04baca lib: Added unix_client_connect_msecs setting to connection API.
Timo Sirainen <tss@iki.fi>
parents: 18656
diff changeset
73 unsigned int unix_client_connect_msecs;
14785
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
74 };
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
75
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
76 struct connection {
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
77 struct connection *prev, *next;
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
78 struct connection_list *list;
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
79
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
80 char *name;
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
81 int fd_in, fd_out;
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
82 struct io *io;
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
83 struct istream *input;
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
84 struct ostream *output;
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
85
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
86 struct timeout *to;
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
87 time_t last_input;
20618
199918a54c38 lib: Added connection.last_input_tv for more accuracy
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 19035
diff changeset
88 struct timeval last_input_tv;
20624
cf6b671fc3e8 lib: Added connection.connect_started/finished timestamps.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20618
diff changeset
89 struct timeval connect_started;
cf6b671fc3e8 lib: Added connection.connect_started/finished timestamps.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20618
diff changeset
90 struct timeval connect_finished;
14785
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
91
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
92 /* for IP client: */
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
93 struct ip_addr ip;
19035
aabfe48db1cf Changed type of internet port values to in_port_t everywhere.
Stephan Bosch <stephan@rename-it.nl>
parents: 18869
diff changeset
94 in_port_t port;
14785
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
95
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
96 /* received minor version */
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
97 unsigned int minor_version;
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
98
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
99 enum connection_disconnect_reason disconnect_reason;
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
100
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
101 unsigned int version_received:1;
22147
edc9369f9d60 lib: Use unix streams with connection when using unix socket
Aki Tuomi <aki.tuomi@dovecot.fi>
parents: 21160
diff changeset
102 unsigned int unix_socket:1;
22841
f746d87d3aff lib: connection: Add connection_input_halt() and connection_input_resume().
Stephan Bosch <stephan.bosch@dovecot.fi>
parents: 22838
diff changeset
103 unsigned int from_streams:1;
14785
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
104 };
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
105
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
106 struct connection_list {
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
107 struct connection *connections;
15234
acd76b5272e9 connection API: Track the number of connections.
Timo Sirainen <tss@iki.fi>
parents: 15187
diff changeset
108 unsigned int connections_count;
14785
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
109
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
110 struct connection_settings set;
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
111 struct connection_vfuncs v;
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
112 };
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
113
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
114 void connection_init_server(struct connection_list *list,
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
115 struct connection *conn, const char *name,
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
116 int fd_in, int fd_out);
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
117 void connection_init_client_ip(struct connection_list *list,
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
118 struct connection *conn,
19035
aabfe48db1cf Changed type of internet port values to in_port_t everywhere.
Stephan Bosch <stephan@rename-it.nl>
parents: 18869
diff changeset
119 const struct ip_addr *ip, in_port_t port);
14785
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
120 void connection_init_client_unix(struct connection_list *list,
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
121 struct connection *conn, const char *path);
17246
54178ae78835 connection: Added support for creating a stream from input/output stream pair.
Stephan Bosch <stephan@rename-it.nl>
parents: 16729
diff changeset
122 void connection_init_from_streams(struct connection_list *list,
54178ae78835 connection: Added support for creating a stream from input/output stream pair.
Stephan Bosch <stephan@rename-it.nl>
parents: 16729
diff changeset
123 struct connection *conn, const char *name,
54178ae78835 connection: Added support for creating a stream from input/output stream pair.
Stephan Bosch <stephan@rename-it.nl>
parents: 16729
diff changeset
124 struct istream *input, struct ostream *output);
14785
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
125
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
126 int connection_client_connect(struct connection *conn);
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
127
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
128 void connection_disconnect(struct connection *conn);
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
129 void connection_deinit(struct connection *conn);
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
130
22841
f746d87d3aff lib: connection: Add connection_input_halt() and connection_input_resume().
Stephan Bosch <stephan.bosch@dovecot.fi>
parents: 22838
diff changeset
131 void connection_input_halt(struct connection *conn);
f746d87d3aff lib: connection: Add connection_input_halt() and connection_input_resume().
Stephan Bosch <stephan.bosch@dovecot.fi>
parents: 22838
diff changeset
132 void connection_input_resume(struct connection *conn);
22838
bed6a1eb53f7 lib: Add connection_streams_changed()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 22147
diff changeset
133 void connection_streams_changed(struct connection *conn);
bed6a1eb53f7 lib: Add connection_streams_changed()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 22147
diff changeset
134
14785
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
135 /* Returns -1 = disconnected, 0 = nothing new, 1 = something new.
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
136 If input_full_behavior is ALLOW, may return also -2 = buffer full. */
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
137 int connection_input_read(struct connection *conn);
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
138 /* Verify that VERSION input matches what we expect. */
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
139 int connection_verify_version(struct connection *conn, const char *const *args);
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
140
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
141 /* Returns human-readable reason for why connection was disconnected. */
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
142 const char *connection_disconnect_reason(struct connection *conn);
20625
3faece727565 lib: Added connection_input_timeout_reason()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20624
diff changeset
143 /* Returns human-readable reason for why connection timed out,
3faece727565 lib: Added connection_input_timeout_reason()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20624
diff changeset
144 e.g. "No input for 10.023 secs". */
3faece727565 lib: Added connection_input_timeout_reason()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents: 20624
diff changeset
145 const char *connection_input_timeout_reason(struct connection *conn);
14785
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
146
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
147 void connection_switch_ioloop(struct connection *conn);
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
148
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
149 struct connection_list *
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
150 connection_list_init(const struct connection_settings *set,
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
151 const struct connection_vfuncs *vfuncs);
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
152 void connection_list_deinit(struct connection_list **list);
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
153
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
154 void connection_input_default(struct connection *conn);
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
155 int connection_input_line_default(struct connection *conn, const char *line);
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
156
43b841891c77 Added "connection" API for handling client/server connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
157 #endif