|
|
@@ -31,24 +31,24 @@ func (vconn *FreedomConnection) Start(ray core.OutboundRay) error {
|
|
|
readFinish := make(chan bool)
|
|
|
writeFinish := make(chan bool)
|
|
|
|
|
|
- go vconn.DumpInput(conn, input, writeFinish)
|
|
|
- go vconn.DumpOutput(conn, output, readFinish)
|
|
|
- go vconn.CloseConn(conn, readFinish, writeFinish)
|
|
|
+ go dumpInput(conn, input, writeFinish)
|
|
|
+ go dumpOutput(conn, output, readFinish)
|
|
|
+ go closeConn(conn, readFinish, writeFinish)
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
-func (vconn *FreedomConnection) DumpInput(conn net.Conn, input <-chan []byte, finish chan<- bool) {
|
|
|
+func dumpInput(conn net.Conn, input <-chan []byte, finish chan<- bool) {
|
|
|
v2net.ChanToWriter(conn, input)
|
|
|
- finish <- true
|
|
|
+ close(finish)
|
|
|
}
|
|
|
|
|
|
-func (vconn *FreedomConnection) DumpOutput(conn net.Conn, output chan<- []byte, finish chan<- bool) {
|
|
|
+func dumpOutput(conn net.Conn, output chan<- []byte, finish chan<- bool) {
|
|
|
v2net.ReaderToChan(output, conn)
|
|
|
close(output)
|
|
|
- finish <- true
|
|
|
+ close(finish)
|
|
|
}
|
|
|
|
|
|
-func (vconn *FreedomConnection) CloseConn(conn net.Conn, readFinish <-chan bool, writeFinish <-chan bool) {
|
|
|
+func closeConn(conn net.Conn, readFinish <-chan bool, writeFinish <-chan bool) {
|
|
|
<-writeFinish
|
|
|
if tcpConn, ok := conn.(*net.TCPConn); ok {
|
|
|
tcpConn.CloseWrite()
|