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) log.Println("bind:", addr)
rep := gosocks5.NewReply(gosocks5.Succeeded, addr) rep := gosocks5.NewReply(gosocks5.Succeeded, addr)
if err := rep.Write(conn); err != nil { if err := rep.Write(conn); err != nil {
log.Println(err)
return return
} }
tconn, err := l.AcceptTCP() tconn, err := l.AcceptTCP()
l.Close() // only accept one peer
if err != nil { if err != nil {
log.Println("accept:", err) log.Println("accept:", err)
gosocks5.NewReply(gosocks5.Failure, nil).Write(conn) gosocks5.NewReply(gosocks5.Failure, nil).Write(conn)
return return
} }
defer tconn.Close() defer tconn.Close()
l.Close()
addr = ToSocksAddr(tconn.RemoteAddr()) addr = ToSocksAddr(tconn.RemoteAddr())
log.Println("accept peer:", addr.String()) log.Println("accept peer:", addr.String())