commit 8842c8b412921fe9318d2caf0a418257b72cf31d
parent 1b50f47306d56da32daab8bfa72cf994dece043b
Author: Jacki <jacki@thejackimonster.de>
Date: Sat, 10 Feb 2024 04:39:25 +0100
Add internal logout message to free resources on application level
Signed-off-by: Jacki <jacki@thejackimonster.de>
Diffstat:
4 files changed, 26 insertions(+), 10 deletions(-)
diff --git a/include/gnunet/gnunet_chat_lib.h b/include/gnunet/gnunet_chat_lib.h
@@ -72,49 +72,55 @@ enum GNUNET_CHAT_MessageKind
GNUNET_CHAT_KIND_LOGIN = 3, /**< GNUNET_CHAT_KIND_LOGIN */
/**
+ * The kind to inform that the application needs to cleanup
+ * resources related to the currently connected account.
+ */
+ GNUNET_CHAT_KIND_LOGOUT = 4, /**< GNUNET_CHAT_KIND_LOGOUT */
+
+ /**
* The kind to inform that a context was updated.
*/
- GNUNET_CHAT_KIND_UPDATE = 4, /**< GNUNET_CHAT_KIND_UPDATE */
+ GNUNET_CHAT_KIND_UPDATE = 5, /**< GNUNET_CHAT_KIND_UPDATE */
/**
* The kind to inform that a contact has joined a chat.
*/
- GNUNET_CHAT_KIND_JOIN = 5, /**< GNUNET_CHAT_KIND_JOIN */
+ GNUNET_CHAT_KIND_JOIN = 6, /**< GNUNET_CHAT_KIND_JOIN */
/**
* The kind to inform that a contact has left a chat.
*/
- GNUNET_CHAT_KIND_LEAVE = 6, /**< GNUNET_CHAT_KIND_LEAVE */
+ GNUNET_CHAT_KIND_LEAVE = 7, /**< GNUNET_CHAT_KIND_LEAVE */
/**
* The kind to inform that a contact has changed.
*/
- GNUNET_CHAT_KIND_CONTACT = 7, /**< GNUNET_CHAT_KIND_CONTACT */
+ GNUNET_CHAT_KIND_CONTACT = 8, /**< GNUNET_CHAT_KIND_CONTACT */
/**
* The kind to describe an invitation to a different chat.
*/
- GNUNET_CHAT_KIND_INVITATION = 8, /**< GNUNET_CHAT_KIND_INVITATION */
+ GNUNET_CHAT_KIND_INVITATION = 9, /**< GNUNET_CHAT_KIND_INVITATION */
/**
* The kind to describe a text message.
*/
- GNUNET_CHAT_KIND_TEXT = 9, /**< GNUNET_CHAT_KIND_TEXT */
+ GNUNET_CHAT_KIND_TEXT = 10, /**< GNUNET_CHAT_KIND_TEXT */
/**
* The kind to describe a shared file.
*/
- GNUNET_CHAT_KIND_FILE = 10, /**< GNUNET_CHAT_KIND_FILE */
+ GNUNET_CHAT_KIND_FILE = 11, /**< GNUNET_CHAT_KIND_FILE */
/**
* The kind to inform about a deletion of a previous message.
*/
- GNUNET_CHAT_KIND_DELETION = 11, /**< GNUNET_CHAT_KIND_DELETION */
+ GNUNET_CHAT_KIND_DELETION = 12, /**< GNUNET_CHAT_KIND_DELETION */
/**
* The kind to tag a previous message.
*/
- GNUNET_CHAT_KIND_TAG = 12, /**< GNUNET_CHAT_KIND_TAG */
+ GNUNET_CHAT_KIND_TAG = 13, /**< GNUNET_CHAT_KIND_TAG */
/**
* An unknown kind of message.
diff --git a/src/gnunet_chat_handle.c b/src/gnunet_chat_handle.c
@@ -377,6 +377,13 @@ handle_disconnect (struct GNUNET_CHAT_Handle *handle)
(handle->files)
);
+ handle_send_internal_message(
+ handle,
+ NULL,
+ GNUNET_CHAT_FLAG_LOGOUT,
+ NULL
+ );
+
GNUNET_CONTAINER_multihashmap_iterate(
handle->groups, it_destroy_handle_groups, NULL
);
diff --git a/src/gnunet_chat_lib.c b/src/gnunet_chat_lib.c
@@ -1584,6 +1584,8 @@ GNUNET_CHAT_message_get_kind (const struct GNUNET_CHAT_Message *message)
return GNUNET_CHAT_KIND_REFRESH;
case GNUNET_CHAT_FLAG_LOGIN:
return GNUNET_CHAT_KIND_LOGIN;
+ case GNUNET_CHAT_FLAG_LOGOUT:
+ return GNUNET_CHAT_KIND_LOGOUT;
case GNUNET_CHAT_FLAG_UPDATE:
return GNUNET_CHAT_KIND_UPDATE;
default:
diff --git a/src/gnunet_chat_message.h b/src/gnunet_chat_message.h
@@ -45,7 +45,8 @@ enum GNUNET_CHAT_MessageFlag
GNUNET_CHAT_FLAG_WARNING = 1,
GNUNET_CHAT_FLAG_REFRESH = 2,
GNUNET_CHAT_FLAG_LOGIN = 3,
- GNUNET_CHAT_FLAG_UPDATE = 4
+ GNUNET_CHAT_FLAG_LOGOUT = 4,
+ GNUNET_CHAT_FLAG_UPDATE = 5
};
struct GNUNET_CHAT_Message