if (conn->input_idle_timeout_secs != 0) {
conn->to = timeout_add_to(conn->ioloop,
conn->input_idle_timeout_secs*1000,
- connection_idle_timeout, conn);
+ *conn->list->v.idle_timeout, conn);
}
if (set->major_version != 0 && !set->dont_send_version) {
e_debug(conn->event, "Sending version handshake");
if (set->client_connect_timeout_msecs != 0) {
conn->to = timeout_add_to(conn->ioloop,
set->client_connect_timeout_msecs,
- connection_connect_timeout, conn);
+ *conn->list->v.connect_timeout, conn);
}
} else {
connection_client_connected(conn, TRUE);
list->v.input = connection_input_default;
if (list->v.input_line == NULL)
list->v.input_line = connection_input_line_default;
-
+ if (list->v.idle_timeout == NULL)
+ list->v.idle_timeout = connection_idle_timeout;
+ if (list->v.connect_timeout == NULL)
+ list->v.connect_timeout = connection_connect_timeout;
return list;
}
void (*input)(struct connection *conn);
int (*input_line)(struct connection *conn, const char *line);
int (*input_args)(struct connection *conn, const char *const *args);
+
+ /* Called when input_idle_timeout_secs is reached, defaults to disconnect */
+ void (*idle_timeout)(struct connection *conn);
+ /* Called when client_connect_timeout_msecs is reached, defaults to disconnect */
+ void (*connect_timeout)(struct connection *conn);
};
struct connection_settings {