Browse Source

fix reading udp packets

Darien Raymond 6 years ago
parent
commit
4f08b7c795
3 changed files with 9 additions and 4 deletions
  1. 7 2
      proxy/dokodemo/dokodemo.go
  2. 1 1
      proxy/shadowsocks/server.go
  3. 1 1
      proxy/socks/server.go

+ 7 - 2
proxy/dokodemo/dokodemo.go

@@ -117,7 +117,12 @@ func (d *DokodemoDoor) Process(ctx context.Context, network net.Network, conn in
 			}
 		}()
 
-		reader := buf.NewReader(conn)
+		var reader buf.Reader
+		if dest.Network == net.Network_UDP {
+			reader = &buf.PacketReader{Reader: conn}
+		} else {
+			reader = buf.NewReader(conn)
+		}
 		if err := buf.Copy(reader, link.Writer, buf.UpdateActivity(timer)); err != nil {
 			return newError("failed to transport request").Base(err)
 		}
@@ -151,7 +156,7 @@ func (d *DokodemoDoor) Process(ctx context.Context, network net.Network, conn in
 			defer tConn.Close()
 
 			writer = &buf.SequentialWriter{Writer: tConn}
-			tReader := buf.NewReader(tConn)
+			tReader := &buf.PacketReader{Reader: tConn}
 			requestCount++
 			tproxyRequest = func() error {
 				defer func() {

+ 1 - 1
proxy/shadowsocks/server.go

@@ -97,7 +97,7 @@ func (s *Server) handlerUDPPayload(ctx context.Context, conn internet.Connection
 	}
 	inbound.User = s.user
 
-	reader := buf.NewReader(conn)
+	reader := &buf.PacketReader{Reader: conn}
 	for {
 		mpayload, err := reader.ReadMultiBuffer()
 		if err != nil {

+ 1 - 1
proxy/socks/server.go

@@ -200,7 +200,7 @@ func (s *Server) handleUDPPayload(ctx context.Context, conn internet.Connection,
 		newError("client UDP connection from ", inbound.Source).WriteToLog(session.ExportIDToError(ctx))
 	}
 
-	reader := buf.NewReader(conn)
+	reader := &buf.PacketReader{Reader: conn}
 	for {
 		mpayload, err := reader.ReadMultiBuffer()
 		if err != nil {