fix: sync protocol and discussion stability fixes
This commit is contained in:
parent
9f73dc20da
commit
aa21bd04e1
43 changed files with 7258 additions and 503 deletions
|
|
@ -257,7 +257,8 @@ func TestDuplicateRPCResultAcrossReconnectUsesSessionCache(t *testing.T) {
|
|||
func TestCanceledRPCErrorIsNotCachedAcrossReconnect(t *testing.T) {
|
||||
const dc = 2
|
||||
handler := &canceledInternalRPC{
|
||||
firstDone: make(chan struct{}),
|
||||
firstStarted: make(chan struct{}),
|
||||
firstDone: make(chan struct{}),
|
||||
}
|
||||
addr, pub, _ := startTestServer(t, Options{DC: dc, RPC: handler})
|
||||
conn, auth, cipher := dialHandshake(t, addr, dc, pub)
|
||||
|
|
@ -266,6 +267,11 @@ func TestCanceledRPCErrorIsNotCachedAcrossReconnect(t *testing.T) {
|
|||
reqMsgID := clientMsgID.New(proto.MessageFromClient)
|
||||
sendEncrypted(t, conn, cipher, auth, reqMsgID, &tg.HelpGetConfigRequest{})
|
||||
|
||||
select {
|
||||
case <-handler.firstStarted:
|
||||
case <-time.After(5 * time.Second):
|
||||
t.Fatal("timed out waiting for first rpc to start after session barrier")
|
||||
}
|
||||
_ = conn.Close()
|
||||
select {
|
||||
case <-handler.firstDone:
|
||||
|
|
@ -355,12 +361,14 @@ func (h *runningDeadlineRPC) Dispatch(ctx context.Context, _ [8]byte, _ int64, _
|
|||
func (h *runningDeadlineRPC) NegotiatedLayer([8]byte, int64) (int, bool) { return 227, true }
|
||||
|
||||
type canceledInternalRPC struct {
|
||||
calls atomic.Int32
|
||||
firstDone chan struct{}
|
||||
calls atomic.Int32
|
||||
firstStarted chan struct{}
|
||||
firstDone chan struct{}
|
||||
}
|
||||
|
||||
func (h *canceledInternalRPC) Dispatch(ctx context.Context, _ [8]byte, _ int64, _ *bin.Buffer) (bin.Encoder, error) {
|
||||
if h.calls.Add(1) == 1 {
|
||||
close(h.firstStarted)
|
||||
<-ctx.Done()
|
||||
close(h.firstDone)
|
||||
return nil, tgerr.New(500, "INTERNAL_SERVER_ERROR")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue