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

fix: nil pointer

This commit is contained in:
源文雨 2023-08-29 22:56:28 +08:00
parent 417a0f256a
commit 9e6d7b7650

View File

@ -288,6 +288,10 @@ func sign(seq uint64, uin string, cmd string, qua string, buff []byte) (sign []b
i := 0 i := 0
for { for {
cs := ss.get() cs := ss.get()
if cs == nil {
err = errors.New("nil signserver")
return
}
sign, extra, token, err = signRequset(seq, uin, cmd, qua, buff) sign, extra, token, err = signRequset(seq, uin, cmd, qua, buff)
if err != nil { if err != nil {
log.Warnf("获取sso sign时出现错误: %v. server: %v", err, cs.URL) log.Warnf("获取sso sign时出现错误: %v. server: %v", err, cs.URL)
@ -345,9 +349,13 @@ func signServerDestroy(uin string) error {
if global.VersionNameCompare("v"+signVersion, "v1.1.6") { if global.VersionNameCompare("v"+signVersion, "v1.1.6") {
return errors.Errorf("当前签名服务器版本 %v 低于 1.1.6,无法使用 destroy 接口", signVersion) return errors.Errorf("当前签名服务器版本 %v 低于 1.1.6,无法使用 destroy 接口", signVersion)
} }
cs := ss.get()
if cs == nil {
return errors.New("nil signserver")
}
signServer, resp, err := requestSignServer( signServer, resp, err := requestSignServer(
http.MethodGet, http.MethodGet,
"destroy"+fmt.Sprintf("?uin=%v&key=%v", uin, ss.get().Key), "destroy"+fmt.Sprintf("?uin=%v&key=%v", uin, cs.Key),
nil, nil, nil, nil,
) )
if err != nil || gjson.GetBytes(resp, "code").Int() != 0 { if err != nil || gjson.GetBytes(resp, "code").Int() != 0 {
@ -385,11 +393,16 @@ func signStartRefreshToken(interval int64) {
qqstr := strconv.FormatInt(base.Account.Uin, 10) qqstr := strconv.FormatInt(base.Account.Uin, 10)
defer t.Stop() defer t.Stop()
for range t.C { for range t.C {
cs, master := ss.get(), base.SignServers[0] cs, master := ss.get(), &base.SignServers[0]
if cs.URL != master.URL && isServerAvaliable(master.URL) { if (cs == nil || cs.URL != master.URL) && isServerAvaliable(master.URL) {
ss.set(&master) ss.set(master)
log.Infof("主签名服务器可用,已切换至主签名服务器 %v", cs.URL) log.Infof("主签名服务器可用,已切换至主签名服务器 %v", cs.URL)
} }
cs = ss.get()
if cs == nil {
log.Warn("无法获得可用签名服务器,停止 token 定时刷新")
return
}
err := signRefreshToken(qqstr) err := signRefreshToken(qqstr)
if err != nil { if err != nil {
log.Warnf("刷新 token 出现错误: %v. server: %v", err, cs.URL) log.Warnf("刷新 token 出现错误: %v. server: %v", err, cs.URL)