Просмотр исходного кода

Revert server.go changes - issue is client-side only

The multi-peer issue (#4507) only affects the WireGuard client (outbound).
The server uses a different code path that doesn't have this problem.
Keeping changes focused on the client-side fix only.

Co-authored-by: RPRX <[email protected]>
copilot-swe-agent[bot] 5 месяцев назад
Родитель
Сommit
96a4338b15
1 измененных файлов с 8 добавлено и 14 удалено
  1. 8 14
      proxy/wireguard/server.go

+ 8 - 14
proxy/wireguard/server.go

@@ -101,22 +101,16 @@ func (s *Server) Process(ctx context.Context, network net.Network, conn stat.Con
 		}
 		}
 
 
 		for _, payload := range mpayload {
 		for _, payload := range mpayload {
-			buff := make([]byte, payload.Len())
-			i, err := payload.Read(buff)
-
-			r := &netReadInfo{
-				buff:     buff,
-				bytes:    i,
-				endpoint: nep,
-				err:      err,
-			}
-			r.waiter.Add(1)
-			select {
-			case s.bindServer.readQueue <- r:
-				r.waiter.Wait()
-			case <-ctx.Done():
+			v, ok := <-s.bindServer.readQueue
+			if !ok {
 				return nil
 				return nil
 			}
 			}
+			i, err := payload.Read(v.buff)
+
+			v.bytes = i
+			v.endpoint = nep
+			v.err = err
+			v.waiter.Done()
 			if err != nil && goerrors.Is(err, io.EOF) {
 			if err != nil && goerrors.Is(err, io.EOF) {
 				nep.conn = nil
 				nep.conn = nil
 				return nil
 				return nil