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

Hold a pending hybrid responder locked until it is filled in

JackDoan 6 дней назад
Родитель
Сommit
70e7d3f2ea
1 измененных файлов с 4 добавлено и 0 удалено
  1. 4 0
      handshake_manager.go

+ 4 - 0
handshake_manager.go

@@ -802,6 +802,10 @@ func (hm *HandshakeManager) beginHandshake(via ViaSender, packet []byte, h *head
 			startTime: time.Now(),
 			startTime: time.Now(),
 			responder: &hybridResponder{},
 			responder: &hybridResponder{},
 		}
 		}
+		// The index is visible to msg3 as soon as it is allocated, so hold the
+		// entry until it is filled in.
+		pending.Lock()
+		defer pending.Unlock()
 		allocIndex = func() (uint32, error) { return hm.allocateIndex(pending) }
 		allocIndex = func() (uint32, error) { return hm.allocateIndex(pending) }
 	}
 	}