瀏覽代碼

Simplify code

V2Ray 10 年之前
父節點
當前提交
71df5103cd
共有 1 個文件被更改,包括 11 次插入8 次删除
  1. 11 8
      proxy/vmess/vmessin.go

+ 11 - 8
proxy/vmess/vmessin.go

@@ -4,7 +4,6 @@ import (
 	"crypto/md5"
 	"io"
 	"net"
-	"strconv"
 	"sync"
 	"time"
 
@@ -40,7 +39,11 @@ func NewVMessInboundHandler(vp *core.Point, clients user.UserSet, udpEnabled boo
 }
 
 func (handler *VMessInboundHandler) Listen(port uint16) error {
-	listener, err := net.Listen("tcp", ":"+strconv.Itoa(int(port)))
+	listener, err := net.ListenTCP("tcp", &net.TCPAddr{
+		IP:   []byte{0, 0, 0, 0},
+		Port: int(port),
+		Zone: "",
+	})
 	if err != nil {
 		return log.Error("Unable to listen tcp:%d", port)
 	}
@@ -54,9 +57,9 @@ func (handler *VMessInboundHandler) Listen(port uint16) error {
 	return nil
 }
 
-func (handler *VMessInboundHandler) AcceptConnections(listener net.Listener) error {
+func (handler *VMessInboundHandler) AcceptConnections(listener *net.TCPListener) error {
 	for handler.accepting {
-		connection, err := listener.Accept()
+		connection, err := listener.AcceptTCP()
 		if err != nil {
 			return log.Error("Failed to accpet connection: %s", err.Error())
 		}
@@ -65,7 +68,7 @@ func (handler *VMessInboundHandler) AcceptConnections(listener net.Listener) err
 	return nil
 }
 
-func (handler *VMessInboundHandler) HandleConnection(connection net.Conn) error {
+func (handler *VMessInboundHandler) HandleConnection(connection *net.TCPConn) error {
 	defer connection.Close()
 
 	connReader := v2net.NewTimeOutReader(120, connection)
@@ -101,14 +104,14 @@ func (handler *VMessInboundHandler) HandleConnection(connection net.Conn) error
 
 	if data, open := <-output; open {
 		buffer = append(buffer, data...)
+		data = nil
 		responseWriter.Write(buffer)
+		buffer = nil
 		go handleOutput(request, responseWriter, output, &writeFinish)
 		writeFinish.Lock()
 	}
 
-	if tcpConn, ok := connection.(*net.TCPConn); ok {
-		tcpConn.CloseWrite()
-	}
+	connection.CloseWrite()
 	readFinish.Lock()
 
 	return nil