Explorar o código

rafthttp: always init streamReader before return from newPeer

Or etcd will panic if someone calls `setTerm()`, which uses streamReader
internally, before streamReader is inited.
Yicheng Qin %!s(int64=11) %!d(string=hai) anos
pai
achega
7ff1fa36f2
Modificáronse 1 ficheiros con 2 adicións e 2 borrados
  1. 2 2
      rafthttp/peer.go

+ 2 - 2
rafthttp/peer.go

@@ -143,10 +143,10 @@ func startPeer(tr http.RoundTripper, urls types.URLs, local, to, cid types.ID, r
 		}
 	}()
 
+	p.msgAppReader = startStreamReader(tr, picker, streamTypeMsgAppV2, local, to, cid, status, p.recvc, p.propc, errorc)
+	reader := startStreamReader(tr, picker, streamTypeMessage, local, to, cid, status, p.recvc, p.propc, errorc)
 	go func() {
 		var paused bool
-		p.msgAppReader = startStreamReader(tr, picker, streamTypeMsgAppV2, local, to, cid, status, p.recvc, p.propc, errorc)
-		reader := startStreamReader(tr, picker, streamTypeMessage, local, to, cid, status, p.recvc, p.propc, errorc)
 		for {
 			select {
 			case m := <-p.sendc: