]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/cats/mysql.c
Correct compile error
[bacula/bacula] / bacula / src / cats / mysql.c
index 645dbb4385481e87a963246a166c85185091740e..6242fc3753d4b42987aecea1bb2fd4dec1918321 100644 (file)
@@ -7,8 +7,8 @@
    many others, a complete list can be found in the file AUTHORS.
    This program is Free Software; you can redistribute it and/or
    modify it under the terms of version two of the GNU General Public
-   License as published by the Free Software Foundation plus additions
-   that are listed in the file LICENSE.
+   License as published by the Free Software Foundation and included
+   in the file LICENSE.
 
    This program is distributed in the hope that it will be useful, but
    WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -258,6 +258,21 @@ db_close_database(JCR *jcr, B_DB *mdb)
    V(mutex);
 }
 
+/*
+ * This call is needed because the message channel thread
+ *  opens a database on behalf of a jcr that was created in
+ *  a different thread. MySQL then allocates thread specific
+ *  data, which is NOT freed when the original jcr thread
+ *  closes the database.  Thus the msgchan must call here
+ *  to cleanup any thread specific data that it created.
+ */
+void db_thread_cleanup()
+{ 
+#ifndef HAVE_WIN32
+   my_thread_end();
+#endif
+}
+
 /*
  * Return the next unique index (auto-increment) for
  * the given table.  Return NULL on error.
@@ -284,7 +299,7 @@ db_escape_string(char *snew, char *old, int len)
 {
    mysql_escape_string(snew, old, len);
 
-#ifdef DO_IT_MYSELF
+#ifdef xDO_IT_MYSELF
 
 /* Should use mysql_real_escape_string ! */
 unsigned long mysql_real_escape_string(MYSQL *mysql, char *to, const char *from, unsigned long length);
@@ -380,10 +395,12 @@ int db_sql_query(B_DB *mdb, const char *query, DB_RESULT_HANDLER *result_handler
 
 void my_mysql_free_result(B_DB *mdb)
 {
+   db_lock(mdb);
    if (mdb->result) {
       mysql_free_result(mdb->result);
       mdb->result = NULL;
    }
+   db_unlock(mdb);
 }
 
 char *my_mysql_batch_lock_path_query = "LOCK TABLES Path write,     "