Browse Source

cleanup vmess inbound handler

Darien Raymond 7 years ago
parent
commit
aefbc4c5de
1 changed files with 9 additions and 14 deletions
  1. 9 14
      proxy/vmess/inbound/inbound.go

+ 9 - 14
proxy/vmess/inbound/inbound.go

@@ -174,15 +174,7 @@ func (h *Handler) RemoveUser(ctx context.Context, email string) error {
 	return nil
 }
 
-func transferRequest(timer signal.ActivityUpdater, session *encoding.ServerSession, request *protocol.RequestHeader, input io.Reader, output buf.Writer) error {
-	bodyReader := session.DecodeRequestBody(request, input)
-	if err := buf.Copy(bodyReader, output, buf.UpdateActivity(timer)); err != nil {
-		return newError("failed to transfer request").Base(err)
-	}
-	return nil
-}
-
-func transferResponse(timer signal.ActivityUpdater, session *encoding.ServerSession, request *protocol.RequestHeader, response *protocol.ResponseHeader, input buf.Reader, output io.Writer) error {
+func transferResponse(timer signal.ActivityUpdater, session *encoding.ServerSession, request *protocol.RequestHeader, response *protocol.ResponseHeader, input buf.Reader, output *buf.BufferedWriter) error {
 	session.EncodeResponseHeader(response, output)
 
 	bodyWriter := session.EncodeResponseBody(request, output)
@@ -199,10 +191,8 @@ func transferResponse(timer signal.ActivityUpdater, session *encoding.ServerSess
 		}
 	}
 
-	if bufferedWriter, ok := output.(*buf.BufferedWriter); ok {
-		if err := bufferedWriter.SetBuffered(false); err != nil {
-			return err
-		}
+	if err := output.SetBuffered(false); err != nil {
+		return err
 	}
 
 	if err := buf.Copy(input, bodyWriter, buf.UpdateActivity(timer)); err != nil {
@@ -285,7 +275,12 @@ func (h *Handler) Process(ctx context.Context, network net.Network, connection i
 
 	requestDone := func() error {
 		defer timer.SetTimeout(sessionPolicy.Timeouts.DownlinkOnly)
-		return transferRequest(timer, svrSession, request, reader, link.Writer)
+
+		bodyReader := svrSession.DecodeRequestBody(request, reader)
+		if err := buf.Copy(bodyReader, link.Writer, buf.UpdateActivity(timer)); err != nil {
+			return newError("failed to transfer request").Base(err)
+		}
+		return nil
 	}
 
 	responseDone := func() error {