From 70d0d6cc2dc6e6d77ece86c0319b74e68274ee7e Mon Sep 17 00:00:00 2001 From: zerolocusta Date: Sat, 16 May 2020 13:28:48 +0800 Subject: [PATCH] fix getID will cause endless loop when noFreeID --- messageids.go | 2 +- unit_messageids_test.go | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/messageids.go b/messageids.go index f9497284..b697571b 100644 --- a/messageids.go +++ b/messageids.go @@ -76,7 +76,7 @@ func (mids *messageIds) claimID(token tokenCompletor, id uint16) { func (mids *messageIds) getID(t tokenCompletor) uint16 { mids.Lock() defer mids.Unlock() - for i := midMin; i <= midMax; i++ { + for i := midMin; i <= midMax && i != 0; i++ { if _, ok := mids.index[i]; !ok { mids.index[i] = t return i diff --git a/unit_messageids_test.go b/unit_messageids_test.go index dd394840..a6f9709c 100644 --- a/unit_messageids_test.go +++ b/unit_messageids_test.go @@ -71,4 +71,9 @@ func Test_noFreeID(t *testing.T) { if mid != 0 { t.Errorf("shouldn't be any mids left") } + + mid = mids.getID(&d) + if mid != 0 { + t.Errorf("shouldn't be any mids left") + } }