From ede6cb30d3cd8ded3cd6bea93cd72b4a29142ea6 Mon Sep 17 00:00:00 2001 From: Mrs4s <1844812067@qq.com> Date: Fri, 13 Nov 2020 21:54:29 +0800 Subject: [PATCH 1/4] fix connection lost. --- client/client.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/client/client.go b/client/client.go index 763fe518..ad5cd9c8 100644 --- a/client/client.go +++ b/client/client.go @@ -1129,6 +1129,7 @@ func (c *QQClient) netLoop() { func (c *QQClient) doHeartbeat() { c.heartbeatEnabled = true + times := 0 for c.Online { seq := c.nextSeq() sso := packets.BuildSsoPacket(seq, c.version.AppId, "Heartbeat.Alive", SystemDeviceInfo.IMEI, []byte{}, c.OutGoingPacketSessionId, []byte{}, c.ksid) @@ -1139,6 +1140,11 @@ func (c *QQClient) doHeartbeat() { c.Disconnect() break } + times++ + if times >= 7 { + _ = c.registerClient() + times = 0 + } time.Sleep(time.Second * 30) } c.heartbeatEnabled = false From 7cbda8299e17e0a28e1efe8e589093bb829fed5c Mon Sep 17 00:00:00 2001 From: Mrs4s <1844812067@qq.com> Date: Sat, 14 Nov 2020 13:36:47 +0800 Subject: [PATCH 2/4] fix group file recall. --- client/decoders.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/client/decoders.go b/client/decoders.go index 1b1e89a2..de91707d 100644 --- a/client/decoders.go +++ b/client/decoders.go @@ -708,6 +708,9 @@ func decodeOnlinePushReqPacket(c *QQClient, seq uint16, payload []byte) (interfa _ = proto.Unmarshal(r.ReadAvailable(), &b) if b.OptMsgRecall != nil { for _, rm := range b.OptMsgRecall.RecalledMsgList { + if rm.MsgType == 2 { + continue + } c.dispatchGroupMessageRecalledEvent(&GroupMessageRecalledEvent{ GroupCode: groupId, OperatorUin: b.OptMsgRecall.Uin, From b813765774d7af1b25c59ca10a3149a33238c681 Mon Sep 17 00:00:00 2001 From: Mrs4s <1844812067@qq.com> Date: Sat, 14 Nov 2020 15:11:21 +0800 Subject: [PATCH 3/4] fix server. --- client/client.go | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/client/client.go b/client/client.go index ad5cd9c8..e67472af 100644 --- a/client/client.go +++ b/client/client.go @@ -176,15 +176,7 @@ func NewClientMd5(uin int64, passwordMd5 [16]byte) *QQClient { transCache: utils.NewCache(time.Second * 15), onlinePushCache: utils.NewCache(time.Second * 15), version: genVersionInfo(SystemDeviceInfo.Protocol), - servers: []*net.TCPAddr{ // default servers - {IP: net.IP{42, 81, 169, 46}, Port: 8080}, - {IP: net.IP{42, 81, 172, 81}, Port: 80}, - {IP: net.IP{114, 221, 148, 59}, Port: 14000}, - {IP: net.IP{42, 81, 172, 147}, Port: 443}, - {IP: net.IP{125, 94, 60, 146}, Port: 80}, - {IP: net.IP{114, 221, 144, 215}, Port: 80}, - {IP: net.IP{42, 81, 172, 22}, Port: 80}, - }, + servers: []*net.TCPAddr{}, } adds, err := net.LookupIP("msfwifi.3g.qq.com") // host servers if err == nil && len(adds) > 0 { @@ -201,6 +193,16 @@ func NewClientMd5(uin int64, passwordMd5 [16]byte) *QQClient { if err == nil && len(sso) > 0 { cli.servers = append(sso, cli.servers...) } + if len(cli.servers) == 0 { + cli.servers = []*net.TCPAddr{ // default servers + {IP: net.IP{42, 81, 172, 81}, Port: 80}, + {IP: net.IP{114, 221, 148, 59}, Port: 14000}, + {IP: net.IP{42, 81, 172, 147}, Port: 443}, + {IP: net.IP{125, 94, 60, 146}, Port: 80}, + {IP: net.IP{114, 221, 144, 215}, Port: 80}, + {IP: net.IP{42, 81, 172, 22}, Port: 80}, + } + } rand.Read(cli.RandomKey) return cli } From 90ec60bcb87292bb93e6813921d7d83e95c22099 Mon Sep 17 00:00:00 2001 From: Mrs4s <1844812067@qq.com> Date: Sat, 14 Nov 2020 15:56:44 +0800 Subject: [PATCH 4/4] fix private msg delay. --- client/client.go | 1 - client/decoders.go | 2 -- 2 files changed, 3 deletions(-) diff --git a/client/client.go b/client/client.go index e67472af..f4304fcd 100644 --- a/client/client.go +++ b/client/client.go @@ -87,7 +87,6 @@ type QQClient struct { eventHandlers *eventHandlers groupListLock sync.Mutex - msgSvcLock sync.Mutex } type loginSigInfo struct { diff --git a/client/decoders.go b/client/decoders.go index de91707d..9a404ee3 100644 --- a/client/decoders.go +++ b/client/decoders.go @@ -426,8 +426,6 @@ func decodeMsgSendResponse(c *QQClient, _ uint16, payload []byte) (interface{}, // MessageSvc.PushNotify func decodeSvcNotify(c *QQClient, _ uint16, _ []byte) (interface{}, error) { - c.msgSvcLock.Lock() - defer c.msgSvcLock.Unlock() _, err := c.sendAndWait(c.buildGetMessageRequestPacket(msg.SyncFlag_START, time.Now().Unix())) return nil, err }