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

udp: Buffer a fragmented handshake burst in the tester, so crossing bursts cannot deadlock the e2e router

JackDoan 6 дней назад
Родитель
Сommit
cbf8146bda
1 измененных файлов с 5 добавлено и 2 удалено
  1. 5 2
      udp/udp_tester.go

+ 5 - 2
udp/udp_tester.go

@@ -85,8 +85,11 @@ type TesterConn struct {
 
 
 func NewListener(l *slog.Logger, s Settings) (Conn, error) {
 func NewListener(l *slog.Logger, s Settings) (Conn, error) {
 	c := &TesterConn{
 	c := &TesterConn{
-		RxPackets: make(chan *Packet, 10),
-		TxPackets: make(chan *Packet, 10),
+		// A fragmented handshake message is a burst of a dozen packets. The
+		// router moves packets one at a time, so if both directions held fewer
+		// than a burst each, two bursts crossing would deadlock it.
+		RxPackets: make(chan *Packet, 64),
+		TxPackets: make(chan *Packet, 64),
 		done:      make(chan struct{}),
 		done:      make(chan struct{}),
 		l:         l,
 		l:         l,
 	}
 	}