]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
res_config_sqlite3: Only join threads that we started
authorSean Bright <sean.bright@gmail.com>
Tue, 23 Jul 2019 17:58:31 +0000 (13:58 -0400)
committerSean Bright <sean.bright@gmail.com>
Wed, 24 Jul 2019 10:51:43 +0000 (04:51 -0600)
ASTERISK-28477 #close
Reported by: Dennis

ASTERISK-28478 #close
Reported by: Dennis

Change-Id: I77347ad46a86dc5b35ed68270cee56acefb4f475

res/res_config_sqlite3.c

index 6446f172e6b51640e5f4735ce74c8654700a32e2..4d99c79de4ce78123e0ffdbd32f1e92b473b44e0 100644 (file)
@@ -102,6 +102,7 @@ struct realtime_sqlite3_db {
        unsigned int debug:1;
        unsigned int exiting:1;
        unsigned int wakeup:1;
+       unsigned int has_batch_thread:1;
        unsigned int batch;
        int busy_timeout;
 };
@@ -367,13 +368,14 @@ void db_start_batch(struct realtime_sqlite3_db *db)
        if (db->batch) {
                ast_cond_init(&db->cond, NULL);
                ao2_ref(db, +1);
-               ast_pthread_create_background(&db->syncthread, NULL, db_sync_thread, db);
+               db->has_batch_thread = !ast_pthread_create_background(&db->syncthread, NULL, db_sync_thread, db);
        }
 }
 
 void db_stop_batch(struct realtime_sqlite3_db *db)
 {
-       if (db->batch) {
+       if (db->has_batch_thread) {
+               db->has_batch_thread = 0;
                db->exiting = 1;
                db_sync(db);
                pthread_join(db->syncthread, NULL);