mirror of https://github.com/v2ray/v2ray-core
use buffered io for socks input
parent
ca79db0de1
commit
d1d71e9e38
|
@ -1,6 +1,7 @@
|
||||||
package socks
|
package socks
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bufio"
|
||||||
"errors"
|
"errors"
|
||||||
"net"
|
"net"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
@ -61,7 +62,9 @@ func (server *SocksServer) AcceptConnections(listener net.Listener) error {
|
||||||
func (server *SocksServer) HandleConnection(connection net.Conn) error {
|
func (server *SocksServer) HandleConnection(connection net.Conn) error {
|
||||||
defer connection.Close()
|
defer connection.Close()
|
||||||
|
|
||||||
auth, err := socksio.ReadAuthentication(connection)
|
reader := bufio.NewReader(connection)
|
||||||
|
|
||||||
|
auth, err := socksio.ReadAuthentication(reader)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error("Error on reading authentication: %v", err)
|
log.Error("Error on reading authentication: %v", err)
|
||||||
return err
|
return err
|
||||||
|
@ -83,7 +86,7 @@ func (server *SocksServer) HandleConnection(connection net.Conn) error {
|
||||||
authResponse := socksio.NewAuthenticationResponse(socksio.AuthNotRequired)
|
authResponse := socksio.NewAuthenticationResponse(socksio.AuthNotRequired)
|
||||||
socksio.WriteAuthentication(connection, authResponse)
|
socksio.WriteAuthentication(connection, authResponse)
|
||||||
|
|
||||||
request, err := socksio.ReadRequest(connection)
|
request, err := socksio.ReadRequest(reader)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error("Error on reading socks request: %v", err)
|
log.Error("Error on reading socks request: %v", err)
|
||||||
return err
|
return err
|
||||||
|
@ -118,7 +121,7 @@ func (server *SocksServer) HandleConnection(connection net.Conn) error {
|
||||||
readFinish := make(chan bool)
|
readFinish := make(chan bool)
|
||||||
writeFinish := 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)
|
go server.dumpOutput(connection, output, writeFinish)
|
||||||
<-writeFinish
|
<-writeFinish
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue