Przeglądaj źródła

dialog: do unlock after saving updated dialog details

- lock()/unlock() for dialog slots are reentrant

(cherry picked from commit e4cf6739e62c2ac1e5364315aaed1a7b73919253)
(cherry picked from commit 73476522301b6de65b8873e4ab04041315e93a82)
(cherry picked from commit 1cb4273aa67c588552b671a98a9edb15471df129)
Daniel-Constantin Mierla 5 lat temu
rodzic
commit
b590ad0aef
1 zmienionych plików z 4 dodań i 3 usunięć
  1. 4 3
      src/modules/dialog/dlg_var.c

+ 4 - 3
src/modules/dialog/dlg_var.c

@@ -434,10 +434,11 @@ int pv_set_dlg_variable(struct sip_msg* msg, pv_param_t *param, int op, pv_value
 	/* unlock dialog */
 	if (dlg) {
 		dlg->dflags |= DLG_FLAG_CHANGED_VARS;
-		dlg_unlock(d_table, &(d_table->entries[dlg->h_entry]));
-		if ( dlg_db_mode==DB_MODE_REALTIME )
+		if ( dlg_db_mode==DB_MODE_REALTIME ) {
+			/* dlg_lock() / dlg_unlock() are reentrant */
 			update_dialog_dbinfo(dlg);
-
+		}
+		dlg_unlock(d_table, &(d_table->entries[dlg->h_entry]));
 	}
 	print_lists(dlg);