diff options
-rw-r--r-- | structures.c | 13 |
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); |