@@ -144,34 +144,34 @@ func (cw *compressedWriter) Write(data []byte) (int, error) {
144
144
if len (data ) == 0 {
145
145
return 0 , nil
146
146
}
147
+
147
148
totalBytes := len (data )
148
149
149
150
length := len (data ) - 4
150
151
151
152
maxPayloadLength := maxPacketSize - 4
152
153
153
154
for length >= maxPayloadLength {
154
- // cut off a slice of size max payload length
155
- dataSmall := data [:maxPayloadLength ]
156
- lenSmall := len (dataSmall )
157
-
158
- var b bytes.Buffer
159
- writer := zlib .NewWriter (& b )
160
- _ , err := writer .Write (dataSmall )
161
- writer .Close ()
155
+ payload := data [:maxPayloadLength ]
156
+ payloadLen := len (payload )
157
+
158
+ bytesBuf := & bytes.Buffer {}
159
+ bytesBuf .Write (blankHeader )
160
+ cw .zw .Reset (bytesBuf )
161
+ _ , err := cw .zw .Write (payload )
162
162
if err != nil {
163
163
return 0 , err
164
164
}
165
+ cw .zw .Close ()
165
166
166
167
// if compression expands the payload, do not compress
167
- useData := b .Bytes ()
168
-
169
- if len (useData ) > len (dataSmall ) {
170
- useData = dataSmall
171
- lenSmall = 0
168
+ compressedPayload := bytesBuf .Bytes ()
169
+ if len (compressedPayload ) > maxPayloadLength {
170
+ compressedPayload = append (blankHeader , payload ... )
171
+ payloadLen = 0
172
172
}
173
173
174
- err = cw .writeComprPacketToNetwork ( useData , lenSmall )
174
+ err = cw .writeToNetwork ( compressedPayload , payloadLen )
175
175
if err != nil {
176
176
return 0 , err
177
177
}
@@ -180,46 +180,44 @@ func (cw *compressedWriter) Write(data []byte) (int, error) {
180
180
data = data [maxPayloadLength :]
181
181
}
182
182
183
- lenSmall := len (data )
183
+ payloadLen := len (data )
184
184
185
185
// do not attempt compression if packet is too small
186
- if lenSmall < minCompressLength {
187
- err := cw .writeComprPacketToNetwork ( data , 0 )
186
+ if payloadLen < minCompressLength {
187
+ err := cw .writeToNetwork ( append ( blankHeader , data ... ) , 0 )
188
188
if err != nil {
189
189
return 0 , err
190
190
}
191
-
192
191
return totalBytes , nil
193
192
}
194
193
195
- var b bytes.Buffer
196
- writer := zlib .NewWriter (& b )
197
-
198
- _ , err := writer .Write (data )
199
- writer .Close ()
200
-
194
+ bytesBuf := & bytes.Buffer {}
195
+ bytesBuf .Write (blankHeader )
196
+ cw .zw .Reset (bytesBuf )
197
+ _ , err := cw .zw .Write (data )
201
198
if err != nil {
202
199
return 0 , err
203
200
}
201
+ cw .zw .Close ()
204
202
205
- // if compression expands the payload, do not compress
206
- useData := b .Bytes ()
203
+ compressedPayload := bytesBuf .Bytes ()
207
204
208
- if len (useData ) > len (data ) {
209
- useData = data
210
- lenSmall = 0
205
+ if len (compressedPayload ) > len (data ) {
206
+ compressedPayload = append ( blankHeader , data ... )
207
+ payloadLen = 0
211
208
}
212
209
213
- err = cw . writeComprPacketToNetwork ( useData , lenSmall )
214
-
210
+ // add header and send over the wire
211
+ err = cw . writeToNetwork ( compressedPayload , payloadLen )
215
212
if err != nil {
216
213
return 0 , err
217
214
}
215
+
218
216
return totalBytes , nil
217
+
219
218
}
220
219
221
- func (cw * compressedWriter ) writeComprPacketToNetwork (data []byte , uncomprLength int ) error {
222
- data = append (blankHeader , data ... )
220
+ func (cw * compressedWriter ) writeToNetwork (data []byte , uncomprLength int ) error {
223
221
224
222
comprLength := len (data ) - 7
225
223
0 commit comments