close conn properly

This commit is contained in:
rui.zheng 2015-07-07 18:10:05 +08:00
parent 4c3a8b3791
commit 3820401678

View File

@ -206,17 +206,18 @@ func serveSocks5(conn net.Conn) {
log.Println("bind:", addr)
rep := gosocks5.NewReply(gosocks5.Succeeded, addr)
if err := rep.Write(conn); err != nil {
log.Println(err)
return
}
tconn, err := l.AcceptTCP()
l.Close() // only accept one peer
if err != nil {
log.Println("accept:", err)
gosocks5.NewReply(gosocks5.Failure, nil).Write(conn)
return
}
defer tconn.Close()
l.Close()
addr = ToSocksAddr(tconn.RemoteAddr())
log.Println("accept peer:", addr.String())