diff --git a/tools/chatgui/transport/member_sync.c b/tools/chatgui/transport/member_sync.c index fe7a3414..65ef2041 100644 --- a/tools/chatgui/transport/member_sync.c +++ b/tools/chatgui/transport/member_sync.c @@ -212,6 +212,8 @@ static int _member_get_items(void* ctx, const char* ns, uint8_t level, } sqlite3_finalize(stmt); *len = off; + DEBUG_DEBUG(DEBUG_CATEGORY_DB_SYNC, "%s: get_items ns=%s L%d/P%016llx mask=%016llx count=%u off=%zu", + MS_ID, ns, level, (unsigned long long)prefix, (unsigned long long)mask, *cnt, off); return 0; } diff --git a/tools/chatgui/transport/merkle_sync.c b/tools/chatgui/transport/merkle_sync.c index 311e0171..b8e15390 100644 --- a/tools/chatgui/transport/merkle_sync.c +++ b/tools/chatgui/transport/merkle_sync.c @@ -59,13 +59,14 @@ uint64_t merkle_sync_level_prefix(uint64_t key, uint8_t level) { uint8_t merkle_sync_prefix_bytes(uint8_t level) { int bits = level * 5; return (uint8_t)((bits + 7) / 8); } static void _prefix_write(uint8_t* out, uint64_t prefix, uint8_t pb) { - for (int i = (int)pb - 1; i >= 0; i--) out[pb - 1 - i] = (uint8_t)(prefix >> (i * 8)); + for (int i = 0; i < (int)pb; i++) + out[i] = (uint8_t)(prefix >> (8 * (7 - i))); } static uint64_t _prefix_read(const uint8_t* in, uint8_t pb) { uint64_t v = 0; for (uint8_t i = 0; i < pb && i < 8; i++) v = (v << 8) | in[i]; - return v; + return v << (8 * (8 - (int)pb)); } static int _popcount_u32(uint32_t v) { return __builtin_popcount(v); }