1
0
mirror of https://github.com/Mrs4s/MiraiGo.git synced 2025-05-04 19:17:38 +08:00

feature: reg rsp check.

This commit is contained in:
Mrs4s 2020-11-04 14:01:31 +08:00
parent 7cc6f1c926
commit 1ffb131768
2 changed files with 15 additions and 5 deletions

View File

@ -248,7 +248,7 @@ func (c *QQClient) SubmitSMS(code string) (*LoginResponse, error) {
func (c *QQClient) init() { func (c *QQClient) init() {
c.Online = true c.Online = true
c.registerClient() _ = c.registerClient()
c.groupSysMsgCache, _ = c.GetGroupSystemMessages() c.groupSysMsgCache, _ = c.GetGroupSystemMessages()
if !c.heartbeatEnabled { if !c.heartbeatEnabled {
c.startHeartbeat() c.startHeartbeat()
@ -949,9 +949,9 @@ func (c *QQClient) SendGroupGift(groupCode, uin uint64, gift message.GroupGift)
_ = c.send(packet) _ = c.send(packet)
} }
func (c *QQClient) registerClient() { func (c *QQClient) registerClient() error {
_, packet := c.buildClientRegisterPacket() _, err := c.sendAndWait(c.buildClientRegisterPacket())
_ = c.send(packet) return err
} }
func (c *QQClient) nextSeq() uint16 { func (c *QQClient) nextSeq() uint16 {
@ -1034,7 +1034,12 @@ func (c *QQClient) netLoop() {
break break
} }
reader = binary.NewNetworkReader(c.Conn) reader = binary.NewNetworkReader(c.Conn)
c.registerClient() if c.registerClient() != nil {
c.Disconnect()
c.lastLostMsg = "register client failed."
c.Error("reconnect failed: register client failed.")
break
}
} }
if l <= 0 { if l <= 0 {
retry++ retry++

View File

@ -170,6 +170,11 @@ func decodeClientRegisterResponse(_ *QQClient, _ uint16, payload []byte) (interf
request.ReadFrom(jce.NewJceReader(payload)) request.ReadFrom(jce.NewJceReader(payload))
data := &jce.RequestDataVersion2{} data := &jce.RequestDataVersion2{}
data.ReadFrom(jce.NewJceReader(request.SBuffer)) data.ReadFrom(jce.NewJceReader(request.SBuffer))
svcRsp := &jce.SvcRespRegister{}
svcRsp.ReadFrom(jce.NewJceReader(data.Map["SvcRespRegister"]["QQService.SvcRespRegister"][1:]))
if svcRsp.Result != "" || svcRsp.Status != 11 {
return nil, errors.New("reg failed")
}
return nil, nil return nil, nil
} }