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

fix connection.

This commit is contained in:
Mrs4s 2020-11-12 20:51:00 +08:00
parent 013c937ad7
commit c41a3dbb0f

View File

@ -208,8 +208,7 @@ func (c *QQClient) Login() (*LoginResponse, error) {
return nil, err return nil, err
} }
go c.netLoop() go c.netLoop()
seq, packet := c.buildLoginPacket() rsp, err := c.sendAndWait(c.buildLoginPacket())
rsp, err := c.sendAndWait(seq, packet)
if err != nil { if err != nil {
c.Disconnect() c.Disconnect()
return nil, err return nil, err
@ -226,6 +225,7 @@ func (c *QQClient) SubmitCaptcha(result string, sign []byte) (*LoginResponse, er
seq, packet := c.buildCaptchaPacket(result, sign) seq, packet := c.buildCaptchaPacket(result, sign)
rsp, err := c.sendAndWait(seq, packet) rsp, err := c.sendAndWait(seq, packet)
if err != nil { if err != nil {
c.Disconnect()
return nil, err return nil, err
} }
l := rsp.(LoginResponse) l := rsp.(LoginResponse)
@ -238,6 +238,7 @@ func (c *QQClient) SubmitCaptcha(result string, sign []byte) (*LoginResponse, er
func (c *QQClient) SubmitSMS(code string) (*LoginResponse, error) { func (c *QQClient) SubmitSMS(code string) (*LoginResponse, error) {
rsp, err := c.sendAndWait(c.buildSMSCodeSubmitPacket(code)) rsp, err := c.sendAndWait(c.buildSMSCodeSubmitPacket(code))
if err != nil { if err != nil {
c.Disconnect()
return nil, err return nil, err
} }
l := rsp.(LoginResponse) l := rsp.(LoginResponse)
@ -1027,6 +1028,9 @@ func (c *QQClient) sendAndWait(seq uint16, pkt []byte) (interface{}, error) {
} }
func (c *QQClient) netLoop() { func (c *QQClient) netLoop() {
if c.NetLooping {
return
}
c.NetLooping = true c.NetLooping = true
reader := binary.NewNetworkReader(c.Conn) reader := binary.NewNetworkReader(c.Conn)
retry := 0 retry := 0
@ -1126,11 +1130,12 @@ func (c *QQClient) doHeartbeat() {
sso := packets.BuildSsoPacket(seq, c.version.AppId, "Heartbeat.Alive", SystemDeviceInfo.IMEI, []byte{}, c.OutGoingPacketSessionId, []byte{}, c.ksid) sso := packets.BuildSsoPacket(seq, c.version.AppId, "Heartbeat.Alive", SystemDeviceInfo.IMEI, []byte{}, c.OutGoingPacketSessionId, []byte{}, c.ksid)
packet := packets.BuildLoginPacket(c.Uin, 0, []byte{}, sso, []byte{}) packet := packets.BuildLoginPacket(c.Uin, 0, []byte{}, sso, []byte{})
_, err := c.sendAndWait(seq, packet) _, err := c.sendAndWait(seq, packet)
if err != nil { if err == nil {
_ = c.Conn.Close() time.AfterFunc(30*time.Second, c.doHeartbeat)
return
} }
time.AfterFunc(30*time.Second, c.doHeartbeat) c.lastLostMsg = "Heartbeat failed"
return c.Disconnect()
} }
c.heartbeatEnabled = false c.heartbeatEnabled = false
} }