From d34eb2cdc623c595d8c3bc223cf23ef463830d29 Mon Sep 17 00:00:00 2001 From: Vitaly Kryukov Date: Sun, 11 Jul 2021 17:03:47 +0300 Subject: [PATCH] Possible fix of https://github.com/xelaj/mtproto/issues/49 --- internal/utils/utils.go | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/internal/utils/utils.go b/internal/utils/utils.go index 3de36d8..b49d309 100644 --- a/internal/utils/utils.go +++ b/internal/utils/utils.go @@ -16,14 +16,21 @@ import ( "time" ) +var lastMessageId int64 + // GenerateMessageId отдает по сути unix timestamp но ужасно специфическим образом // TODO: нахуя нужно битовое и на -4?? -func GenerateMessageId() int64 { +func GenerateMessageId() (r int64) { const billion = 1000 * 1000 * 1000 unixnano := time.Now().UnixNano() seconds := unixnano / billion nanoseconds := unixnano % billion - return (seconds << 32) | (nanoseconds & -4) + r = (seconds << 32) | (nanoseconds & -4) + if r == lastMessageId { + r += 4 + } + lastMessageId = r + return r } func AuthKeyHash(key []byte) []byte {