aboutsummaryrefslogtreecommitdiff
path: root/libdino/src
diff options
context:
space:
mode:
authorMarvin W <git@larma.de>2025-04-11 11:51:36 +0200
committerMarvin W <git@larma.de>2025-04-11 11:51:36 +0200
commitf5fde137bbe30749e0e7391ada2ebfcb7d389acf (patch)
tree2811c33496917ee7580e0d9daceacfadce76aa10 /libdino/src
parent643a31535b44c369edc8c5d601b1b14a3db2f207 (diff)
Fix potential crashes during account disabling
Diffstat (limited to 'libdino/src')
-rw-r--r--libdino/src/service/connection_manager.vala1
-rw-r--r--libdino/src/service/conversation_manager.vala14
2 files changed, 9 insertions, 6 deletions
diff --git a/libdino/src/service/connection_manager.vala b/libdino/src/service/connection_manager.vala
index f5f5aaa5..c8b5c4ed 100644
--- a/libdino/src/service/connection_manager.vala
+++ b/libdino/src/service/connection_manager.vala
@@ -254,6 +254,7 @@ public class ConnectionManager : Object {
debug("[%s %p] Connection error: %s", account.bare_jid.to_string(), stream, e.message);
change_connection_state(account, ConnectionState.DISCONNECTED);
+ if (!connections.has_key(account)) return;
connections[account].reset();
StreamError.Flag? flag = stream.get_flag(StreamError.Flag.IDENTITY);
diff --git a/libdino/src/service/conversation_manager.vala b/libdino/src/service/conversation_manager.vala
index a757e8af..e7c315a2 100644
--- a/libdino/src/service/conversation_manager.vala
+++ b/libdino/src/service/conversation_manager.vala
@@ -62,12 +62,14 @@ public class ConversationManager : StreamInteractionModule, Object {
}
public Conversation? get_conversation_for_message(Entities.Message message) {
- if (message.type_ == Entities.Message.Type.CHAT) {
- return create_conversation(message.counterpart.bare_jid, message.account, Conversation.Type.CHAT);
- } else if (message.type_ == Entities.Message.Type.GROUPCHAT) {
- return create_conversation(message.counterpart.bare_jid, message.account, Conversation.Type.GROUPCHAT);
- } else if (message.type_ == Entities.Message.Type.GROUPCHAT_PM) {
- return create_conversation(message.counterpart, message.account, Conversation.Type.GROUPCHAT_PM);
+ if (conversations.has_key(message.account)) {
+ if (message.type_ == Entities.Message.Type.CHAT) {
+ return create_conversation(message.counterpart.bare_jid, message.account, Conversation.Type.CHAT);
+ } else if (message.type_ == Entities.Message.Type.GROUPCHAT) {
+ return create_conversation(message.counterpart.bare_jid, message.account, Conversation.Type.GROUPCHAT);
+ } else if (message.type_ == Entities.Message.Type.GROUPCHAT_PM) {
+ return create_conversation(message.counterpart, message.account, Conversation.Type.GROUPCHAT_PM);
+ }
}
return null;
}