diff --git a/src/chat/group_avatar.c b/src/chat/group_avatar.c index 8a453eb1..774b7001 100644 --- a/src/chat/group_avatar.c +++ b/src/chat/group_avatar.c @@ -330,6 +330,8 @@ static void ga_receive(struct ETCP_CONN* conn, struct ll_entry* entry) { malformed: DEBUG_WARN(DEBUG_CATEGORY_CHAT, "group avatar: malformed/mixed blocks group=%llu peer=%016llx bytes=%zu", (unsigned long long)group, (unsigned long long)peer, length); + if (p) DEBUG_WARN(DEBUG_CATEGORY_CHAT, "group avatar: receive state rx=%d offset=%u version=%llu requested=%llu", + p->rx != NULL, p->rx_offset, (unsigned long long)(p->rx ? p->rx->version : 0), (unsigned long long)p->requested_at); if (p) { ga_release(p, 0); p->requested_at = get_time_tb(); } out: if (entry) { queue_dgram_free(entry); queue_entry_free(entry); } @@ -347,6 +349,9 @@ static void ga_tick(void* arg) { struct ga_peer* p = ga_find(ctx, group->group_id, item->node_id, 1); if (!p) continue; p->seen = 1; if (p->epoch != item->local_epoch) { + DEBUG_DEBUG(DEBUG_CATEGORY_CHAT, "group avatar: session epoch reset group=%llu peer=%016llx old=%llu new=%llu tx=%d rx=%d", + (unsigned long long)p->group, (unsigned long long)p->peer, (unsigned long long)p->epoch, + (unsigned long long)item->local_epoch, p->tx != NULL, p->rx != NULL); ga_release(p, 1); ga_release(p, 0); p->epoch = item->local_epoch; p->requested_at = 0; p->state_pending = 1; } if (now - p->advertised_at >= GA_EXCHANGE_TB) p->state_pending = 1;