Make the connection process more reliable

This commit is contained in:
Nonoo 2020-10-28 09:47:18 +01:00
parent a4317908e3
commit ffd14d6a2a
2 changed files with 13 additions and 7 deletions

View file

@ -148,9 +148,11 @@ func (s *controlStream) handleRead(r []byte) error {
if r[21] == 0x05 && !s.serialAndAudioStreamOpened { // Answer for our second auth?
s.secondAuthTimer.Stop()
if err := s.sendRequestSerialAndAudio(); err != nil {
reportError(err)
}
time.AfterFunc(300*time.Millisecond, func() {
if err := s.sendRequestSerialAndAudio(); err != nil {
reportError(err)
}
})
}
}
case 80:
@ -279,9 +281,7 @@ func (s *controlStream) init() error {
return err
}
s.common.pkt7.startPeriodicSend(&s.common, 2, false)
s.common.pkt0.startPeriodicSend(&s.common)
s.common.pkt0.init(&s.common)
if err := s.sendPktLogin(); err != nil {
return err
}
@ -314,6 +314,9 @@ func (s *controlStream) init() error {
}
log.Debug("login ok, first auth sent...")
s.common.pkt7.startPeriodicSend(&s.common, 2, false)
s.common.pkt0.startPeriodicSend(&s.common)
s.requestSerialAndAudioTimeout = time.AfterFunc(5*time.Second, func() {
reportError(errors.New("login/serial/audio request timeout"))
})

View file

@ -163,7 +163,6 @@ func (p *pkt0Type) loop(s *streamCommon) {
}
func (p *pkt0Type) startPeriodicSend(s *streamCommon) {
p.sendSeq = 1
p.sendTicker = time.NewTicker(100 * time.Millisecond)
p.periodicStopNeededChan = make(chan bool)
@ -181,3 +180,7 @@ func (p *pkt0Type) stopPeriodicSend() {
p.sendTicker.Stop()
}
func (p *pkt0Type) init(s *streamCommon) {
p.sendSeq = 1
}