diff --git a/client/client.go b/client/client.go index cebb22e1..d2d53b9e 100644 --- a/client/client.go +++ b/client/client.go @@ -14,7 +14,6 @@ import ( "go.uber.org/atomic" "github.com/Mrs4s/MiraiGo/binary" - "github.com/Mrs4s/MiraiGo/binary/jce" "github.com/Mrs4s/MiraiGo/client/internal/auth" "github.com/Mrs4s/MiraiGo/client/internal/highway" "github.com/Mrs4s/MiraiGo/client/internal/network" @@ -74,8 +73,8 @@ type QQClient struct { // timeDiff int64 // address - otherSrvAddrs []string - fileStorageInfo *jce.FileStoragePushFSSvcList + // otherSrvAddrs []string + // fileStorageInfo *jce.FileStoragePushFSSvcList // message state msgSvcCache *utils.Cache diff --git a/client/decoders.go b/client/decoders.go index 79036fa9..736014f5 100644 --- a/client/decoders.go +++ b/client/decoders.go @@ -3,7 +3,6 @@ package client import ( "crypto/md5" "encoding/hex" - "fmt" "net" "strconv" "strings" @@ -343,7 +342,7 @@ func decodePushReqPacket(c *QQClient, _ *network.IncomingPacketInfo, payload []b list := &jce.FileStoragePushFSSvcList{} list.ReadFrom(fmtPkt) c.Debug("got file storage svc push.") - c.fileStorageInfo = list + // c.fileStorageInfo = list rsp := cmd0x6ff.C501RspBody{} if err := proto.Unmarshal(list.BigDataChannel.PbBuf, &rsp); err == nil && rsp.RspBody != nil { c.highwaySession.SigSession = rsp.RspBody.SigSession @@ -354,11 +353,14 @@ func decodePushReqPacket(c *QQClient, _ *network.IncomingPacketInfo, payload []b c.highwaySession.AppendAddr(addr.GetIp(), addr.GetPort()) } } - if srv.GetServiceType() == 21 { - for _, addr := range srv.Addrs { - c.otherSrvAddrs = append(c.otherSrvAddrs, fmt.Sprintf("%v:%v", binary.UInt32ToIPV4Address(addr.GetIp()), addr.GetPort())) + /* + if srv.GetServiceType() == 21 { + for _, addr := range srv.Addrs { + c.otherSrvAddrs = append(c.otherSrvAddrs, fmt.Sprintf("%v:%v", binary.UInt32ToIPV4Address(addr.GetIp()), addr.GetPort())) + } } - } + + */ } } } diff --git a/client/internal/network/response.go b/client/internal/network/response.go index ce911ed5..c2d97f3c 100644 --- a/client/internal/network/response.go +++ b/client/internal/network/response.go @@ -55,7 +55,7 @@ func (t *Transport) ReadResponse(head []byte) (*Response, error) { func (t *Transport) readSSOFrame(resp *Response, payload []byte) error { reader := binary.NewReader(payload) headLen := reader.ReadInt32() - if headLen-4 > int32(reader.Len()) { + if headLen < 4 || headLen-4 > int32(reader.Len()) { return errors.WithStack(ErrPacketDropped) } diff --git a/client/multimsg.go b/client/multimsg.go index 9b81a2aa..6cead481 100644 --- a/client/multimsg.go +++ b/client/multimsg.go @@ -1,6 +1,7 @@ package client import ( + "bytes" "fmt" "math" "time" @@ -190,23 +191,18 @@ func (c *QQClient) DownloadForwardMessage(resId string) *message.ForwardElement if multiMsg.PbItemList == nil { return nil } - var pv string + var pv bytes.Buffer for i := 0; i < int(math.Min(4, float64(len(multiMsg.Msg)))); i++ { m := multiMsg.Msg[i] - pv += fmt.Sprintf(`