@@ -10,6 +10,10 @@ const (
10
10
minCompressLength = 50
11
11
)
12
12
13
+ var (
14
+ blankHeader = []byte {0 , 0 , 0 , 0 , 0 , 0 , 0 }
15
+ )
16
+
13
17
type packetReader interface {
14
18
readNext (need int ) ([]byte , error )
15
19
}
@@ -24,7 +28,7 @@ type compressedReader struct {
24
28
type compressedWriter struct {
25
29
connWriter io.Writer
26
30
mc * mysqlConn
27
- header [] byte
31
+ zw * zlib. Writer
28
32
}
29
33
30
34
func NewCompressedReader (buf packetReader , mc * mysqlConn ) * compressedReader {
@@ -39,7 +43,7 @@ func NewCompressedWriter(connWriter io.Writer, mc *mysqlConn) *compressedWriter
39
43
return & compressedWriter {
40
44
connWriter : connWriter ,
41
45
mc : mc ,
42
- header : [] byte { 0 , 0 , 0 , 0 , 0 , 0 , 0 } ,
46
+ zw : zlib . NewWriter ( new (bytes. Buffer )) ,
43
47
}
44
48
}
45
49
@@ -89,18 +93,14 @@ func (cr *compressedReader) uncompressPacket() error {
89
93
// write comprData to a bytes.buffer, then read it using zlib into data
90
94
br := bytes .NewReader (comprData )
91
95
92
- resetter , ok := cr .zr .(zlib.Resetter )
93
-
94
- if ok {
95
- err := resetter .Reset (br , []byte {})
96
- if err != nil {
97
- return err
98
- }
99
- } else {
96
+ if cr .zr == nil {
100
97
cr .zr , err = zlib .NewReader (br )
101
- if err != nil {
102
- return err
103
- }
98
+ } else {
99
+ err = cr .zr .(zlib.Resetter ).Reset (br , nil )
100
+ }
101
+
102
+ if err != nil {
103
+ return err
104
104
}
105
105
106
106
defer cr .zr .Close ()
@@ -219,7 +219,7 @@ func (cw *compressedWriter) Write(data []byte) (int, error) {
219
219
}
220
220
221
221
func (cw * compressedWriter ) writeComprPacketToNetwork (data []byte , uncomprLength int ) error {
222
- data = append (cw . header , data ... )
222
+ data = append (blankHeader , data ... )
223
223
224
224
comprLength := len (data ) - 7
225
225
0 commit comments