struct oauth2_settings oauth2_set;
struct db_oauth2_request *head;
-
- unsigned int refcount;
};
static struct db_oauth2 *db_oauth2_head = NULL;
for(db = db_oauth2_head; db != NULL; db = db->next) {
if (strcmp(db->config_path, config_path) == 0) {
- db->refcount++;
return db;
}
}
pool_t pool = pool_alloconly_create("db_oauth2", 128);
db = p_new(pool, struct db_oauth2, 1);
db->pool = pool;
- db->refcount = 1;
db->config_path = p_strdup(pool, config_path);
db->set = default_oauth2_settings;
return db;
}
-void db_oauth2_ref(struct db_oauth2 *db)
-{
- i_assert(db->refcount > 0);
- db->refcount++;
-}
-
-void db_oauth2_unref(struct db_oauth2 **_db)
+static void db_oauth2_free(struct db_oauth2 **_db)
{
struct db_oauth2 *ptr, *db = *_db;
- i_assert(db->refcount > 0);
-
- if (--db->refcount > 0) return;
for(ptr = db_oauth2_head; ptr != NULL; ptr = ptr->next) {
if (ptr == db) {
{
return db->set.use_grant_password;
}
+
+void db_oauth2_deinit(void)
+{
+ while (db_oauth2_head != NULL) {
+ struct db_oauth2 *db = db_oauth2_head;
+ db_oauth2_free(&db);
+ }
+}
struct db_oauth2 *db_oauth2_init(const char *config_path);
-void db_oauth2_ref(struct db_oauth2 *);
-void db_oauth2_unref(struct db_oauth2 **);
-
bool db_oauth2_uses_password_grant(const struct db_oauth2 *db);
const char *db_oauth2_get_openid_configuration_url(const struct db_oauth2 *db);
CALLBACK_TYPECHECK(callback, void(*)(struct db_oauth2_request *, enum passdb_result, const char*, typeof(context))), \
request, (db_oauth2_lookup_callback_t*)callback, (void*)context)
+void db_oauth2_deinit(void);
+
#endif
#include "auth-master-connection.h"
#include "auth-client-connection.h"
#include "auth-policy.h"
+#include "db-oauth2.h"
#include <unistd.h>
#include <sys/stat.h>
auth_policy_deinit();
mech_register_deinit(&mech_reg);
mech_otp_deinit();
+ db_oauth2_deinit();
mech_deinit(global_auth_settings);
settings_free(global_auth_settings);
return &module->module;
}
-static void oauth2_deinit(struct passdb_module *passdb)
+static void oauth2_deinit(struct passdb_module *passdb ATTR_UNUSED)
{
- struct oauth2_passdb_module *module = (struct oauth2_passdb_module *)passdb;
- db_oauth2_unref(&module->db);
}
/* FIXME: Remove when oauth2 mech is fixed */