return ssn;
}
-
+ /** Create a new TLS session
+ *
+ * Configures a new TLS session, configuring options, setting callbacks etc...
+ *
+ * @param ctx to alloc session data in. Should usually be NULL unless the lifetime of the
+ * session is tied to another talloc'd object.
+ * @param conf to use to configure the tls session.
+ * @param request The current #REQUEST.
+ * @param client_cert Whether to require a client_cert.
+ * @return a new session on success, or NULL on error.
+ */
tls_session_t *tls_new_session(TALLOC_CTX *ctx, fr_tls_server_conf_t *conf, REQUEST *request, bool client_cert)
{
- tls_session_t *state = NULL;
- SSL *new_tls = NULL;
+ tls_session_t *state = NULL;
+ SSL *new_tls = NULL;
int verify_mode = 0;
VALUE_PAIR *vp;
INFO("rlm_sql_sqlite: Opening SQLite database \"%s\"", driver->filename);
#ifdef HAVE_SQLITE3_OPEN_V2
status = sqlite3_open_v2(driver->filename, &(conn->db), SQLITE_OPEN_READWRITE | SQLITE_OPEN_NOMUTEX, NULL);
+ sqlite3_busy_timeout( conn->db, 200); /*wait up to 200 ms for db locks*/
#else
+
status = sqlite3_open(driver->filename, &(conn->db));
#endif
- if (!conn->db) {
- #ifdef HAVE_SQLITE3_ERRSTR
- ERROR("rlm_sql_sqlite: Failed creating opening/creating SQLite: %s", sqlite3_errstr(status));
- #else
- ERROR("rlm_sql_sqlite: Failed creating opening/creating SQLite database error code (%i)",
- status);
- #endif
+ if (!conn->db || (sql_check_error(conn->db, status) != RLM_SQL_OK)) {
+ sql_print_error(conn->db, status, "Error opening SQLite database \"%s\"", driver->filename);
+ return RLM_SQL_ERROR;
+ }
+ status = sqlite3_busy_timeout(conn->db, driver->busy_timeout);
+ if (sql_check_error(conn->db, status) != RLM_SQL_OK) {
+ sql_print_error(conn->db, status, "Error setting busy timeout");
return RLM_SQL_ERROR;
}
-
- if (sql_check_error(conn->db) != RLM_SQL_OK) return RLM_SQL_ERROR;
/*
* Enable extended return codes for extra debugging info.