Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/majn/tgl.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--structures.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/structures.c b/structures.c
index 1e8a4c2..3e72b82 100644
--- a/structures.c
+++ b/structures.c
@@ -2462,11 +2462,22 @@ void tgls_free_message_gw (struct tgl_message *M, void *TLS) {
tgls_free_message (TLS, M);
}
+void tgls_remove_message_gw (struct tgl_state *TLS, struct tgl_message *M) {
+ if (tree_lookup_message (TLS->message_unsent_tree, M)) {
+ tglm_message_remove_unsent (TLS, M);
+ }
+}
+
+void tgls_remove_and_free_message_gw (struct tgl_message *M, void *TLS) {
+ tgls_remove_message_gw (TLS, M);
+ tgls_free_message (TLS, M);
+}
+
void tgl_free_all (struct tgl_state *TLS) {
tree_act_ex_peer (TLS->peer_tree, tgls_free_peer_gw, TLS);
TLS->peer_tree = tree_clear_peer (TLS->peer_tree);
TLS->peer_by_name_tree = tree_clear_peer_by_name (TLS->peer_by_name_tree);
- tree_act_ex_message (TLS->message_tree, tgls_free_message_gw, TLS);
+ tree_act_ex_message (TLS->message_tree, tgls_remove_and_free_message_gw, TLS);
TLS->message_tree = tree_clear_message (TLS->message_tree);
tree_act_ex_message (TLS->message_unsent_tree, tgls_free_message_gw, TLS);
TLS->message_unsent_tree = tree_clear_message (TLS->message_unsent_tree);