diff --git a/src/chat/group_avatar.c b/src/chat/group_avatar.c index 8463eb95..3a48b070 100644 --- a/src/chat/group_avatar.c +++ b/src/chat/group_avatar.c @@ -113,7 +113,8 @@ static void ga_changed(struct UTUN_INSTANCE* inst, uint64_t group) { } int group_avatar_apply(struct UTUN_INSTANCE* inst, uint64_t group, const struct group_avatar_record* r) { - if (!r || ga_verify(inst, group, r) < 0) return -1; + if (!r) { DEBUG_ERROR(DEBUG_CATEGORY_CHAT, "group avatar: missing candidate record"); return -1; } + if (ga_verify(inst, group, r) < 0) return -1; struct group_avatar_record current; if (group_avatar_get(inst, group, ¤t) < 0) return -1; int newer = ga_compare(r->version, r->hash, current.version, current.hash); @@ -140,7 +141,8 @@ int group_avatar_apply(struct UTUN_INSTANCE* inst, uint64_t group, const struct } int group_avatar_set(struct UTUN_INSTANCE* inst, uint64_t group, const uint8_t* data, size_t size) { - if (!inst || size > GROUP_AVATAR_MAX || (size && !data) || !member_files_member(inst, group, inst->node_id, 0)) { + if (!inst || !CC(inst) || !CC(inst)->initialized || !CC(inst)->db || size > GROUP_AVATAR_MAX || + (size && !data) || !member_files_member(inst, group, inst->node_id, 0)) { DEBUG_WARN(DEBUG_CATEGORY_CHAT, "group avatar: publication denied group=%llu bytes=%zu", (unsigned long long)group, size); return -1; } uint8_t key[32], bytes[GROUP_AVATAR_MAX + 64]; char ch[32]; ga_channel(group, ch); diff --git a/tools/chatgui/src/avatars/groupavatarmanager.cpp b/tools/chatgui/src/avatars/groupavatarmanager.cpp index 247c6cea..3eb0fb2c 100644 --- a/tools/chatgui/src/avatars/groupavatarmanager.cpp +++ b/tools/chatgui/src/avatars/groupavatarmanager.cpp @@ -62,7 +62,10 @@ QImage GroupAvatarManager::image(const QString& channel, quint64 version, const } void GroupAvatarManager::upload(const QString& channel, const QString& source) { - if (!gui_bridge_is_uasync_ready()) { emit status(channel, text("Chat is stopped")); return; } + if (!gui_bridge_is_uasync_ready()) { + DEBUG_WARN(DEBUG_CATEGORY_CHAT, "group avatar: upload requested while chat is stopped channel=%s", qPrintable(channel)); + emit status(channel, text("Chat is stopped")); return; + } quint64 generation = ++m_generation[channel]; emit status(channel, text("Preparing group avatar…")); m_pool.start(QRunnable::create([this, channel, source, generation] { QImageReader reader(source); reader.setAutoTransform(true); QImage image; QByteArray encoded; QString error;