Test close conn

This commit is contained in:
wweir
2019-01-04 16:55:59 +08:00
parent ec4286e6d4
commit 9586e7bc8e
4 changed files with 16 additions and 25 deletions
+3 -4
View File
@@ -7,7 +7,6 @@ import (
"github.com/wweir/sower/proxy/kcp"
"github.com/wweir/sower/proxy/quic"
"github.com/wweir/sower/proxy/tcp"
"github.com/wweir/sower/shadow"
)
type Client interface {
@@ -37,9 +36,9 @@ func StartClient(netType, server, password string) {
continue
}
if rc, err = shadow.Shadow(rc, password); err != nil {
glog.Fatalln(err)
}
// if rc, err = shadow.Shadow(rc, password); err != nil {
// glog.Fatalln(err)
// }
go relay(conn, rc)
}
+5 -8
View File
@@ -9,7 +9,6 @@ import (
"github.com/wweir/sower/proxy/kcp"
"github.com/wweir/sower/proxy/quic"
"github.com/wweir/sower/proxy/tcp"
"github.com/wweir/sower/shadow"
)
type Server interface {
@@ -40,18 +39,16 @@ func StartServer(netType, port, password string) {
for {
conn := <-connCh
conn, err := shadow.Shadow(conn, password)
if err != nil {
glog.Fatalln(err)
}
// conn, err := shadow.Shadow(conn, password)
// if err != nil {
// glog.Fatalln(err)
// }
go handle(conn)
}
}
func handle(conn net.Conn) {
defer conn.Close()
conn, addr, err := parse.ParseAddr(conn)
if err != nil {
glog.Warningln(err)
@@ -64,7 +61,7 @@ func handle(conn net.Conn) {
glog.Warningln(err)
return
}
defer rc.Close()
if err := rc.(*net.TCPConn).SetKeepAlive(true); err != nil {
glog.Warningln(err)
}
+4 -8
View File
@@ -5,7 +5,6 @@ import (
"net"
"sync"
"sync/atomic"
"time"
"github.com/golang/glog"
)
@@ -22,10 +21,10 @@ const (
func relay(conn1, conn2 net.Conn) {
wg := &sync.WaitGroup{}
exitFlag := new(int32)
wg.Add(2)
go redirect(conn2, conn1, wg, exitFlag)
redirect(conn1, conn2, wg, exitFlag)
wg.Wait()
}
func redirect(dst, src net.Conn, wg *sync.WaitGroup, exitFlag *int32) {
@@ -34,9 +33,6 @@ func redirect(dst, src net.Conn, wg *sync.WaitGroup, exitFlag *int32) {
}
atomic.AddInt32(exitFlag, 1)
// wakeup all conn goroutine
now := time.Now()
dst.SetDeadline(now)
src.SetDeadline(now)
wg.Done()
src.Close()
dst.Close()
}
+4 -5
View File
@@ -28,6 +28,10 @@ func (c *conn) Read(b []byte) (n int, err error) {
c.readBuf, err = c.aead.Open(b[:0], c.decryptNonce(), b[:n], nil)
return len(c.readBuf), err
}
func (c *conn) Write(b []byte) (n int, err error) {
c.writeBuf = c.aead.Seal(nil, c.encryptNonce(), b, nil)
return c.Conn.Write(c.writeBuf)
}
func Shadow(c net.Conn, password string) (net.Conn, error) {
aead, err := newAEAD(password)
@@ -43,11 +47,6 @@ func Shadow(c net.Conn, password string) (net.Conn, error) {
}, nil
}
func (c *conn) Write(b []byte) (n int, err error) {
c.writeBuf = c.aead.Seal(nil, c.encryptNonce(), b, nil)
return c.Conn.Write(c.writeBuf)
}
func newAEAD(password string) (cipher.AEAD, error) {
block, err := aes.NewCipher([]byte(password + password)[:16])
if err != nil {