Browse Source

fix snappy not close connection, fix #456, fix #584, fix #600

ffdfgdfg 4 năm trước cách đây
mục cha
commit
5224307da7
1 tập tin đã thay đổi với 15 bổ sung2 xóa
  1. 15 2
      lib/conn/snappy.go

+ 15 - 2
lib/conn/snappy.go

@@ -1,6 +1,7 @@
 package conn
 
 import (
+	"errors"
 	"io"
 
 	"github.com/golang/snappy"
@@ -9,12 +10,14 @@ import (
 type SnappyConn struct {
 	w *snappy.Writer
 	r *snappy.Reader
+	c io.Closer
 }
 
 func NewSnappyConn(conn io.ReadWriteCloser) *SnappyConn {
 	c := new(SnappyConn)
 	c.w = snappy.NewBufferedWriter(conn)
 	c.r = snappy.NewReader(conn)
+	c.c = conn.(io.Closer)
 	return c
 }
 
@@ -35,6 +38,16 @@ func (s *SnappyConn) Read(b []byte) (n int, err error) {
 }
 
 func (s *SnappyConn) Close() error {
-	s.w.Close()
-	return s.w.Close()
+	err := s.w.Close()
+	err2 := s.c.Close()
+	if err != nil && err2 == nil {
+		return err
+	}
+	if err == nil && err2 != nil {
+		return err2
+	}
+	if err != nil && err2 != nil {
+		return errors.New(err.Error() + err2.Error())
+	}
+	return nil
 }