The imap-master connection needs to be freed when the client is freed.
Otherwise it attempts to free the client again.
"\n", NULL));
}
+ if (client->master_conn != NULL)
+ imap_master_connection_free(&client->master_conn);
if (client->ioloop_ctx != NULL) {
io_loop_context_remove_callbacks(client->ioloop_ctx,
imap_client_io_activate_user,
if (conn->read_callback != NULL)
conn->read_callback(conn->context, "-");
+ imap_master_connection_free(&conn);
+}
+
+void imap_master_connection_free(struct imap_master_connection **_conn)
+{
+ struct imap_master_connection *conn = *_conn;
+
+ *_conn = NULL;
timeout_remove(&conn->to);
connection_deinit(&conn->conn);
struct imap_master_connection **conn_r,
const char **error_r);
void imap_master_connection_deinit(struct imap_master_connection **conn);
+void imap_master_connection_free(struct imap_master_connection **conn);
void imap_master_connections_init(void);
void imap_master_connections_deinit(void);