Kaynağa Gözat

use buffered io for socks input

V2Ray 10 yıl önce
ebeveyn
işleme
d1d71e9e38
1 değiştirilmiş dosya ile 6 ekleme ve 3 silme
  1. 6 3
      net/socks/socks.go

+ 6 - 3
net/socks/socks.go

@@ -1,6 +1,7 @@
 package socks
 
 import (
+  "bufio"
 	"errors"
 	"net"
 	"strconv"
@@ -60,8 +61,10 @@ func (server *SocksServer) AcceptConnections(listener net.Listener) error {
 
 func (server *SocksServer) HandleConnection(connection net.Conn) error {
 	defer connection.Close()
+  
+  reader := bufio.NewReader(connection)
 
-	auth, err := socksio.ReadAuthentication(connection)
+	auth, err := socksio.ReadAuthentication(reader)
 	if err != nil {
 		log.Error("Error on reading authentication: %v", err)
 		return err
@@ -83,7 +86,7 @@ func (server *SocksServer) HandleConnection(connection net.Conn) error {
 	authResponse := socksio.NewAuthenticationResponse(socksio.AuthNotRequired)
 	socksio.WriteAuthentication(connection, authResponse)
 
-	request, err := socksio.ReadRequest(connection)
+	request, err := socksio.ReadRequest(reader)
 	if err != nil {
 		log.Error("Error on reading socks request: %v", err)
 		return err
@@ -118,7 +121,7 @@ func (server *SocksServer) HandleConnection(connection net.Conn) error {
 	readFinish := make(chan bool)
 	writeFinish := make(chan bool)
 
-	go server.dumpInput(connection, input, readFinish)
+	go server.dumpInput(reader, input, readFinish)
 	go server.dumpOutput(connection, output, writeFinish)
 	<-writeFinish