mirror of
https://github.com/ergochat/ergo.git
synced 2024-11-11 06:29:29 +01:00
review fixes
1. Avoid undefined behavior of time.Time{}.UnixNano() 2. Times should be compared with Equal()
This commit is contained in:
parent
a19ac34ace
commit
1ec029a53b
@ -200,8 +200,11 @@ func (reg *ChannelRegistry) LoadChannel(nameCasefolded string) (info RegisteredC
|
|||||||
founder, _ := tx.Get(fmt.Sprintf(keyChannelFounder, channelKey))
|
founder, _ := tx.Get(fmt.Sprintf(keyChannelFounder, channelKey))
|
||||||
topic, _ := tx.Get(fmt.Sprintf(keyChannelTopic, channelKey))
|
topic, _ := tx.Get(fmt.Sprintf(keyChannelTopic, channelKey))
|
||||||
topicSetBy, _ := tx.Get(fmt.Sprintf(keyChannelTopicSetBy, channelKey))
|
topicSetBy, _ := tx.Get(fmt.Sprintf(keyChannelTopicSetBy, channelKey))
|
||||||
topicSetTime, _ := tx.Get(fmt.Sprintf(keyChannelTopicSetTime, channelKey))
|
var topicSetTime time.Time
|
||||||
topicSetTimeInt, _ := strconv.ParseInt(topicSetTime, 10, 64)
|
topicSetTimeStr, _ := tx.Get(fmt.Sprintf(keyChannelTopicSetTime, channelKey))
|
||||||
|
if topicSetTimeInt, topicSetTimeErr := strconv.ParseInt(topicSetTimeStr, 10, 64); topicSetTimeErr == nil {
|
||||||
|
topicSetTime = time.Unix(0, topicSetTimeInt).UTC()
|
||||||
|
}
|
||||||
password, _ := tx.Get(fmt.Sprintf(keyChannelPassword, channelKey))
|
password, _ := tx.Get(fmt.Sprintf(keyChannelPassword, channelKey))
|
||||||
modeString, _ := tx.Get(fmt.Sprintf(keyChannelModes, channelKey))
|
modeString, _ := tx.Get(fmt.Sprintf(keyChannelModes, channelKey))
|
||||||
userLimitString, _ := tx.Get(fmt.Sprintf(keyChannelUserLimit, channelKey))
|
userLimitString, _ := tx.Get(fmt.Sprintf(keyChannelUserLimit, channelKey))
|
||||||
@ -237,7 +240,7 @@ func (reg *ChannelRegistry) LoadChannel(nameCasefolded string) (info RegisteredC
|
|||||||
Founder: founder,
|
Founder: founder,
|
||||||
Topic: topic,
|
Topic: topic,
|
||||||
TopicSetBy: topicSetBy,
|
TopicSetBy: topicSetBy,
|
||||||
TopicSetTime: time.Unix(0, topicSetTimeInt).UTC(),
|
TopicSetTime: topicSetTime,
|
||||||
Key: password,
|
Key: password,
|
||||||
Modes: modeSlice,
|
Modes: modeSlice,
|
||||||
Bans: banlist,
|
Bans: banlist,
|
||||||
@ -277,7 +280,7 @@ func (reg *ChannelRegistry) deleteChannel(tx *buntdb.Tx, key string, info Regist
|
|||||||
founder, _ := tx.Get(fmt.Sprintf(keyChannelFounder, key))
|
founder, _ := tx.Get(fmt.Sprintf(keyChannelFounder, key))
|
||||||
|
|
||||||
// to see if we're deleting the right channel, confirm the founder and the registration time
|
// to see if we're deleting the right channel, confirm the founder and the registration time
|
||||||
if founder == info.Founder && registeredAt == info.RegisteredAt {
|
if founder == info.Founder && registeredAt.Equal(info.RegisteredAt) {
|
||||||
for _, keyFmt := range channelKeyStrings {
|
for _, keyFmt := range channelKeyStrings {
|
||||||
tx.Delete(fmt.Sprintf(keyFmt, key))
|
tx.Delete(fmt.Sprintf(keyFmt, key))
|
||||||
}
|
}
|
||||||
@ -345,7 +348,11 @@ func (reg *ChannelRegistry) saveChannel(tx *buntdb.Tx, channelInfo RegisteredCha
|
|||||||
|
|
||||||
if includeFlags&IncludeTopic != 0 {
|
if includeFlags&IncludeTopic != 0 {
|
||||||
tx.Set(fmt.Sprintf(keyChannelTopic, channelKey), channelInfo.Topic, nil)
|
tx.Set(fmt.Sprintf(keyChannelTopic, channelKey), channelInfo.Topic, nil)
|
||||||
tx.Set(fmt.Sprintf(keyChannelTopicSetTime, channelKey), strconv.FormatInt(channelInfo.TopicSetTime.UnixNano(), 10), nil)
|
var topicSetTimeStr string
|
||||||
|
if !channelInfo.TopicSetTime.IsZero() {
|
||||||
|
topicSetTimeStr = strconv.FormatInt(channelInfo.TopicSetTime.UnixNano(), 10)
|
||||||
|
}
|
||||||
|
tx.Set(fmt.Sprintf(keyChannelTopicSetTime, channelKey), topicSetTimeStr, nil)
|
||||||
tx.Set(fmt.Sprintf(keyChannelTopicSetBy, channelKey), channelInfo.TopicSetBy, nil)
|
tx.Set(fmt.Sprintf(keyChannelTopicSetBy, channelKey), channelInfo.TopicSetBy, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user