@@ -139,34 +139,50 @@ def send_compressed(self, buf, packet_number=None):
139
139
maxpktlen = constants .MAX_PACKET_LENGTH
140
140
if pllen > maxpktlen :
141
141
pkts = _prepare_packets (buf , pktnr )
142
- tmpbuf = b'' .join (pkts )
142
+ if PY2 :
143
+ tmpbuf = bytearray ()
144
+ for pkt in pkts :
145
+ tmpbuf += pkt
146
+ tmpbuf = buffer (tmpbuf )
147
+ else :
148
+ tmpbuf = b'' .join (pkts )
143
149
del pkts
144
150
seqid = 0
145
151
zbuf = zlib .compress (tmpbuf [:16384 ])
146
- zpkts .append (struct .pack ('<I' , len (zbuf ))[0 :3 ]
147
- + struct .pack ('<B' , seqid )
148
- + b'\x00 \x40 \x00 ' + zbuf )
152
+ header = (struct .pack ('<I' , len (zbuf ))[0 :3 ]
153
+ + struct .pack ('<B' , seqid )
154
+ + b'\x00 \x40 \x00 ' )
155
+ if PY2 :
156
+ header = buffer (header )
157
+ zpkts .append (header + zbuf )
149
158
tmpbuf = tmpbuf [16384 :]
150
159
pllen = len (tmpbuf )
151
160
seqid = seqid + 1
152
161
while pllen > maxpktlen :
153
162
zbuf = zlib .compress (tmpbuf [:maxpktlen ])
154
- zpkts .append (struct .pack ('<I' , len (zbuf ))[0 :3 ]
155
- + struct .pack ('<B' , seqid )
156
- + b'\xff \xff \xff ' + zbuf )
163
+ header = (struct .pack ('<I' , len (zbuf ))[0 :3 ]
164
+ + struct .pack ('<B' , seqid )
165
+ + b'\xff \xff \xff ' )
166
+ if PY2 :
167
+ header = buffer (header )
168
+ zpkts .append (header + zbuf )
157
169
tmpbuf = tmpbuf [maxpktlen :]
158
170
pllen = len (tmpbuf )
159
171
seqid = seqid + 1
160
172
if tmpbuf :
161
173
zbuf = zlib .compress (tmpbuf )
162
- zpkts .append (struct .pack ('<I' , len (zbuf ))[0 :3 ]
163
- + struct .pack ('<B' , seqid )
164
- + struct .pack ('<I' , pllen )[0 :3 ]
165
- + zbuf )
174
+ header = (struct .pack ('<I' , len (zbuf ))[0 :3 ]
175
+ + struct .pack ('<B' , seqid )
176
+ + struct .pack ('<I' , pllen )[0 :3 ])
177
+ if PY2 :
178
+ header = buffer (header )
179
+ zpkts .append (header + zbuf )
166
180
del tmpbuf
167
181
else :
168
182
pkt = (struct .pack ('<I' , pllen )[0 :3 ] +
169
183
struct .pack ('<B' , pktnr ) + buf )
184
+ if PY2 :
185
+ pkt = buffer (pkt )
170
186
pllen = len (pkt )
171
187
if pllen > 50 :
172
188
zbuf = zlib .compress (pkt )
@@ -175,10 +191,12 @@ def send_compressed(self, buf, packet_number=None):
175
191
+ struct .pack ('<I' , pllen )[0 :3 ]
176
192
+ zbuf )
177
193
else :
178
- zpkts .append (struct .pack ('<I' , pllen )[0 :3 ]
179
- + struct .pack ('<B' , 0 )
180
- + struct .pack ('<I' , 0 )[0 :3 ]
181
- + pkt )
194
+ header = (struct .pack ('<I' , pllen )[0 :3 ]
195
+ + struct .pack ('<B' , 0 )
196
+ + struct .pack ('<I' , 0 )[0 :3 ])
197
+ if PY2 :
198
+ header = buffer (header )
199
+ zpkts .append (header + pkt )
182
200
183
201
for zip_packet in zpkts :
184
202
try :
@@ -228,6 +246,7 @@ def recv_py26_plain(self):
228
246
try :
229
247
# Read the header of the MySQL packet, 4 bytes
230
248
header = bytearray (b'' )
249
+
231
250
while len (header ) < 4 :
232
251
chunk = self .sock .recv (4 )
233
252
if not chunk :
@@ -273,7 +292,7 @@ def recv_compressed(self):
273
292
except IndexError :
274
293
pass
275
294
276
- header = init_bytearray (b'' )
295
+ header = bytearray (b'' )
277
296
packets = []
278
297
try :
279
298
abyte = self .sock .recv (1 )
@@ -308,19 +327,19 @@ def recv_compressed(self):
308
327
raise errors .OperationalError (
309
328
errno = 2055 , values = (self .get_address (), _strioerror (err )))
310
329
311
- tmp = []
330
+ tmp = init_bytearray ( b'' )
312
331
for packet in packets :
313
332
payload_length = struct_unpack ("<I" , header [4 :7 ] + b'\x00 ' )[0 ]
314
333
if payload_length == 0 :
315
334
tmp .append (packet [7 :])
316
335
else :
317
336
if PY2 :
318
- tmp . append ( zlib .decompress (
319
- buffer (packet [7 :]))) # pylint: disable=E0602
337
+ tmp += zlib .decompress (
338
+ buffer (packet [7 :])) # pylint: disable=E0602
320
339
else :
321
- tmp . append ( zlib .decompress (packet [7 :]) )
340
+ tmp += zlib .decompress (packet [7 :])
322
341
323
- self ._split_zipped_payload (b'' . join ( tmp ) )
342
+ self ._split_zipped_payload (tmp )
324
343
del tmp
325
344
326
345
try :
0 commit comments