@@ -40,10 +40,6 @@ type Manager interface {
40
40
// Associate the given codec with the given version ID
41
41
RegisterCodec (version uint16 , codec Codec ) error
42
42
43
- // Define the maximum size, in bytes, of something serialized/deserialized
44
- // by this codec manager
45
- SetMaxSize (int )
46
-
47
43
// Size returns the size, in bytes, of [value] when it's marshaled
48
44
// using the codec with the given version.
49
45
// RegisterCodec must have been called with that version.
@@ -92,13 +88,6 @@ func (m *manager) RegisterCodec(version uint16, codec Codec) error {
92
88
return nil
93
89
}
94
90
95
- // SetMaxSize of bytes allowed
96
- func (m * manager ) SetMaxSize (size int ) {
97
- m .lock .Lock ()
98
- m .maxSize = size
99
- m .lock .Unlock ()
100
- }
101
-
102
91
func (m * manager ) Size (version uint16 , value interface {}) (int , error ) {
103
92
if value == nil {
104
93
return 0 , errMarshalNil // can't marshal nil
@@ -127,7 +116,6 @@ func (m *manager) Marshal(version uint16, value interface{}) ([]byte, error) {
127
116
m .lock .RLock ()
128
117
c , exists := m .codecs [version ]
129
118
m .lock .RUnlock ()
130
-
131
119
if ! exists {
132
120
return nil , ErrUnknownVersion
133
121
}
@@ -150,22 +138,19 @@ func (m *manager) Unmarshal(bytes []byte, dest interface{}) (uint16, error) {
150
138
return 0 , errUnmarshalNil
151
139
}
152
140
153
- m .lock .RLock ()
154
141
if byteLen := len (bytes ); byteLen > m .maxSize {
155
- m .lock .RUnlock ()
156
142
return 0 , fmt .Errorf ("%w: %d > %d" , errUnmarshalTooBig , byteLen , m .maxSize )
157
143
}
158
144
159
145
p := wrappers.Packer {
160
146
Bytes : bytes ,
161
147
}
162
-
163
148
version := p .UnpackShort ()
164
149
if p .Errored () { // Make sure the codec version is correct
165
- m .lock .RUnlock ()
166
150
return 0 , errCantUnpackVersion
167
151
}
168
152
153
+ m .lock .RLock ()
169
154
c , exists := m .codecs [version ]
170
155
m .lock .RUnlock ()
171
156
if ! exists {
0 commit comments