Mercurial > dovecot > core-2.2
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 |
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 | 40 They return 1 = ok, continue. 0 = ok, but stop processing more |
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 |