userdb-sql.c revision 45312f52ff3a3d4c137447be4c7556500c2f8bf2
45312f52ff3a3d4c137447be4c7556500c2f8bf2Timo Sirainen/* Copyright (c) 2004-2009 Dovecot authors, see the included COPYING file */
137ea7ca34005345aa2304a940149b7f3774d727Timo Sirainensql_query_get_result(struct sql_result *result,
9f431ccfb6932746db56245c8a3d3415717ef545Timo Sirainen unsigned int i, fields_count;
9f431ccfb6932746db56245c8a3d3415717ef545Timo Sirainen fields_count = sql_result_get_fields_count(result);
9f431ccfb6932746db56245c8a3d3415717ef545Timo Sirainen for (i = 0; i < fields_count; i++) {
9f431ccfb6932746db56245c8a3d3415717ef545Timo Sirainen value = sql_result_get_field_value(result, i);
2cfe9983ce7a6280636ee12beccc2e865111967bTimo Sirainenstatic void sql_query_callback(struct sql_result *sql_result,
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen struct auth_request *auth_request = sql_request->auth_request;
0f39a57760d93cddbce3ca43096d78e0fe2f42fdTimo Sirainen enum userdb_result result = USERDB_RESULT_INTERNAL_FAILURE;
0f39a57760d93cddbce3ca43096d78e0fe2f42fdTimo Sirainen "User query failed: %s",
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen } else if (ret == 0) {
b323e76cf555fa6031f3dbbdedeac0df2fff3778Timo Sirainen auth_request_log_info(auth_request, "sql", "Unknown user");
6fabfb7bbfd88d0c1de66981e52850f26067623bTimo Sirainen sql_query_get_result(sql_result, auth_request);
3c9783956dea385b322cd7fa6bf8c98c17a907a0Timo Sirainenstatic const char *
3c9783956dea385b322cd7fa6bf8c98c17a907a0Timo Sirainenuserdb_sql_escape(const char *str, const struct auth_request *auth_request)
3c9783956dea385b322cd7fa6bf8c98c17a907a0Timo Sirainen struct userdb_module *_module = auth_request->userdb->userdb;
3c9783956dea385b322cd7fa6bf8c98c17a907a0Timo Sirainen return sql_escape_string(module->conn->db, str);
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainenstatic void userdb_sql_lookup(struct auth_request *auth_request,
b42f37ae6f65ed986315b6885568d32115e589b1Timo Sirainen struct userdb_module *_module = auth_request->userdb->userdb;
b42f37ae6f65ed986315b6885568d32115e589b1Timo Sirainen var_expand(query, module->conn->set.user_query,
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen auth_request_get_var_expand_table(auth_request,
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen sql_request = i_new(struct userdb_sql_request, 1);
49e513d090753ccbf95560b2f3a21f081a5b6c51Timo Sirainen auth_request_log_debug(auth_request, "sql", "%s", str_c(query));
b42f37ae6f65ed986315b6885568d32115e589b1Timo Sirainenuserdb_sql_preinit(struct auth_userdb *auth_userdb, const char *args)
b42f37ae6f65ed986315b6885568d32115e589b1Timo Sirainen module = p_new(auth_userdb->auth->pool, struct sql_userdb_module, 1);
b42f37ae6f65ed986315b6885568d32115e589b1Timo Sirainenstatic void userdb_sql_init(struct userdb_module *_module,
b42f37ae6f65ed986315b6885568d32115e589b1Timo Sirainen _module->blocking = (flags & SQL_DB_FLAG_BLOCKING) != 0;
b42f37ae6f65ed986315b6885568d32115e589b1Timo Sirainenstatic void userdb_sql_deinit(struct userdb_module *_module)