aboutsummaryrefslogtreecommitdiff
path: root/packets/messages/types/SvcClassInfo.go
diff options
context:
space:
mode:
Diffstat (limited to 'packets/messages/types/SvcClassInfo.go')
-rw-r--r--packets/messages/types/SvcClassInfo.go11
1 files changed, 8 insertions, 3 deletions
diff --git a/packets/messages/types/SvcClassInfo.go b/packets/messages/types/SvcClassInfo.go
index fb9dbd8..d41723d 100644
--- a/packets/messages/types/SvcClassInfo.go
+++ b/packets/messages/types/SvcClassInfo.go
@@ -1,8 +1,6 @@
1package types 1package types
2 2
3import ( 3import (
4 "math"
5
6 "github.com/pektezol/bitreader" 4 "github.com/pektezol/bitreader"
7) 5)
8 6
@@ -24,7 +22,7 @@ func ParseSvcClassInfo(reader *bitreader.ReaderType) SvcClassInfo {
24 if createonclient { 22 if createonclient {
25 serverclasses := make([]ServerClass, length) 23 serverclasses := make([]ServerClass, length)
26 for i := 0; i < int(length); i++ { 24 for i := 0; i < int(length); i++ {
27 id, err := reader.ReadBits(int(math.Log2(float64(length))) + 1) 25 id, err := reader.ReadBits(HighestBitIndex(uint(length)) + 1)
28 if err != nil { 26 if err != nil {
29 panic(err) 27 panic(err)
30 } 28 }
@@ -40,3 +38,10 @@ func ParseSvcClassInfo(reader *bitreader.ReaderType) SvcClassInfo {
40 ServerClasses: serverclasses, 38 ServerClasses: serverclasses,
41 } 39 }
42} 40}
41
42func HighestBitIndex(i uint) int {
43 var j int
44 for j = 31; j >= 0 && (i&(1<<j)) == 0; j-- {
45 }
46 return j
47}