diff --git a/controlstream.go b/controlstream.go index c6ac99e..67da4d5 100644 --- a/controlstream.go +++ b/controlstream.go @@ -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")) }) diff --git a/pkt0.go b/pkt0.go index d156751..f1a163f 100644 --- a/pkt0.go +++ b/pkt0.go @@ -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 +}