1
0
mirror of https://github.com/Mrs4s/MiraiGo.git synced 2025-05-04 19:17:38 +08:00
This commit is contained in:
Mrs4s 2020-07-21 18:49:01 +08:00
parent a7e460246f
commit 569bcdc7b1

View File

@ -555,18 +555,26 @@ func (c *QQClient) sendAndWait(seq uint16, pkt []byte) (interface{}, error) {
func (c *QQClient) loop() { func (c *QQClient) loop() {
reader := binary.NewNetworkReader(c.Conn) reader := binary.NewNetworkReader(c.Conn)
retry := 0
for c.Online { for c.Online {
l, err := reader.ReadInt32() l, err := reader.ReadInt32()
if err == io.EOF || err == io.ErrClosedPipe { if err == io.EOF || err == io.ErrClosedPipe {
err = c.connect() err = c.connect()
if err != nil { if err != nil {
c.Online = false c.Online = false
return c.dispatchDisconnectEvent(&ClientDisconnectedEvent{Message: "Connection lost."})
break
} }
reader = binary.NewNetworkReader(c.Conn) reader = binary.NewNetworkReader(c.Conn)
c.registerClient() c.registerClient()
} }
if l <= 0 { if l <= 0 {
retry++
time.Sleep(time.Second * 3)
if retry > 10 {
c.Online = false
c.dispatchDisconnectEvent(&ClientDisconnectedEvent{Message: "Connection lost."})
}
continue continue
} }
data, err := reader.ReadBytes(int(l) - 4) data, err := reader.ReadBytes(int(l) - 4)
@ -582,6 +590,7 @@ func (c *QQClient) loop() {
continue continue
} }
} }
retry = 0
//fmt.Println(pkt.CommandName) //fmt.Println(pkt.CommandName)
go func() { go func() {
decoder, ok := c.decoders[pkt.CommandName] decoder, ok := c.decoders[pkt.CommandName]