mirror of
https://github.com/Mezeporta/Erupe.git
synced 2026-03-22 15:43:49 +01:00
fix(channelserver): add error logging to silently ignored repo calls
19 repository calls across 8 handler files were silently discarding errors with `_ =`, making database failures invisible. Add structured logging at appropriate levels: Error for write operations where data loss may occur (guild saves, member updates), Warn for read operations where handlers continue with zero-value defaults (application checks, warehouse loads, item box queries). No control flow changes.
This commit is contained in:
@@ -338,7 +338,11 @@ func handleMsgMhfStateFestaU(s *Session, p mhfpacket.MHFPacket) {
|
||||
guild, err := s.server.guildRepo.GetByCharID(s.charID)
|
||||
applicant := false
|
||||
if guild != nil {
|
||||
applicant, _ = s.server.guildRepo.HasApplication(guild.ID, s.charID)
|
||||
var appErr error
|
||||
applicant, appErr = s.server.guildRepo.HasApplication(guild.ID, s.charID)
|
||||
if appErr != nil {
|
||||
s.logger.Warn("Failed to check guild application status", zap.Error(appErr))
|
||||
}
|
||||
}
|
||||
if err != nil || guild == nil || applicant {
|
||||
doAckSimpleFail(s, pkt.AckHandle, make([]byte, 4))
|
||||
@@ -367,7 +371,11 @@ func handleMsgMhfStateFestaG(s *Session, p mhfpacket.MHFPacket) {
|
||||
guild, err := s.server.guildRepo.GetByCharID(s.charID)
|
||||
applicant := false
|
||||
if guild != nil {
|
||||
applicant, _ = s.server.guildRepo.HasApplication(guild.ID, s.charID)
|
||||
var appErr error
|
||||
applicant, appErr = s.server.guildRepo.HasApplication(guild.ID, s.charID)
|
||||
if appErr != nil {
|
||||
s.logger.Warn("Failed to check guild application status", zap.Error(appErr))
|
||||
}
|
||||
}
|
||||
resp := byteframe.NewByteFrame()
|
||||
if err != nil || guild == nil || applicant {
|
||||
|
||||
@@ -59,7 +59,11 @@ func handleMsgMhfUpdateGuildMessageBoard(s *Session, p mhfpacket.MHFPacket) {
|
||||
guild, err := s.server.guildRepo.GetByCharID(s.charID)
|
||||
applicant := false
|
||||
if guild != nil {
|
||||
applicant, _ = s.server.guildRepo.HasApplication(guild.ID, s.charID)
|
||||
var appErr error
|
||||
applicant, appErr = s.server.guildRepo.HasApplication(guild.ID, s.charID)
|
||||
if appErr != nil {
|
||||
s.logger.Warn("Failed to check guild application status", zap.Error(appErr))
|
||||
}
|
||||
}
|
||||
if err != nil || guild == nil || applicant {
|
||||
doAckSimpleSucceed(s, pkt.AckHandle, make([]byte, 4))
|
||||
|
||||
@@ -51,13 +51,19 @@ func handleMsgMhfOperateGuild(s *Session, p mhfpacket.MHFPacket) {
|
||||
guild.LeaderCharID = guildMembers[i].CharID
|
||||
guildMembers[0].OrderIndex = guildMembers[i].OrderIndex
|
||||
guildMembers[i].OrderIndex = 1
|
||||
_ = s.server.guildRepo.SaveMember(guildMembers[0])
|
||||
_ = s.server.guildRepo.SaveMember(guildMembers[i])
|
||||
if err := s.server.guildRepo.SaveMember(guildMembers[0]); err != nil {
|
||||
s.logger.Error("Failed to save former leader member data", zap.Error(err))
|
||||
}
|
||||
if err := s.server.guildRepo.SaveMember(guildMembers[i]); err != nil {
|
||||
s.logger.Error("Failed to save new leader member data", zap.Error(err))
|
||||
}
|
||||
bf.WriteUint32(guildMembers[i].CharID)
|
||||
break
|
||||
}
|
||||
}
|
||||
_ = s.server.guildRepo.Save(guild)
|
||||
if err := s.server.guildRepo.Save(guild); err != nil {
|
||||
s.logger.Error("Failed to save guild after leadership resign", zap.Error(err))
|
||||
}
|
||||
}
|
||||
case mhfpacket.OperateGuildApply:
|
||||
err = s.server.guildRepo.CreateApplication(guild.ID, s.charID, s.charID, GuildApplicationTypeApplied)
|
||||
@@ -76,9 +82,11 @@ func handleMsgMhfOperateGuild(s *Session, p mhfpacket.MHFPacket) {
|
||||
if err != nil {
|
||||
response = 0
|
||||
} else {
|
||||
_ = s.server.mailRepo.SendMail(0, s.charID, "Withdrawal",
|
||||
if err := s.server.mailRepo.SendMail(0, s.charID, "Withdrawal",
|
||||
fmt.Sprintf("You have withdrawn from 「%s」.", guild.Name),
|
||||
0, 0, false, true)
|
||||
0, 0, false, true); err != nil {
|
||||
s.logger.Warn("Failed to send guild withdrawal notification", zap.Error(err))
|
||||
}
|
||||
}
|
||||
bf.WriteUint32(uint32(response))
|
||||
case mhfpacket.OperateGuildDonateRank:
|
||||
@@ -101,7 +109,9 @@ func handleMsgMhfOperateGuild(s *Session, p mhfpacket.MHFPacket) {
|
||||
return
|
||||
}
|
||||
guild.Comment, _ = stringsupport.SJISToUTF8(pkt.Data2.ReadNullTerminatedBytes())
|
||||
_ = s.server.guildRepo.Save(guild)
|
||||
if err := s.server.guildRepo.Save(guild); err != nil {
|
||||
s.logger.Error("Failed to save guild comment", zap.Error(err))
|
||||
}
|
||||
case mhfpacket.OperateGuildUpdateMotto:
|
||||
if !characterGuildInfo.IsLeader && !characterGuildInfo.IsSubLeader() {
|
||||
doAckSimpleFail(s, pkt.AckHandle, make([]byte, 4))
|
||||
@@ -110,7 +120,9 @@ func handleMsgMhfOperateGuild(s *Session, p mhfpacket.MHFPacket) {
|
||||
_ = pkt.Data1.ReadUint16()
|
||||
guild.SubMotto = pkt.Data1.ReadUint8()
|
||||
guild.MainMotto = pkt.Data1.ReadUint8()
|
||||
_ = s.server.guildRepo.Save(guild)
|
||||
if err := s.server.guildRepo.Save(guild); err != nil {
|
||||
s.logger.Error("Failed to save guild motto", zap.Error(err))
|
||||
}
|
||||
case mhfpacket.OperateGuildRenamePugi1:
|
||||
handleRenamePugi(s, pkt.Data2, guild, 1)
|
||||
case mhfpacket.OperateGuildRenamePugi2:
|
||||
@@ -165,7 +177,9 @@ func handleRenamePugi(s *Session, bf *byteframe.ByteFrame, guild *Guild, num int
|
||||
default:
|
||||
guild.PugiName3 = name
|
||||
}
|
||||
_ = s.server.guildRepo.Save(guild)
|
||||
if err := s.server.guildRepo.Save(guild); err != nil {
|
||||
s.logger.Error("Failed to save guild pugi name", zap.Error(err))
|
||||
}
|
||||
}
|
||||
|
||||
func handleChangePugi(s *Session, outfit uint8, guild *Guild, num int) {
|
||||
@@ -177,7 +191,9 @@ func handleChangePugi(s *Session, outfit uint8, guild *Guild, num int) {
|
||||
case 3:
|
||||
guild.PugiOutfit3 = outfit
|
||||
}
|
||||
_ = s.server.guildRepo.Save(guild)
|
||||
if err := s.server.guildRepo.Save(guild); err != nil {
|
||||
s.logger.Error("Failed to save guild pugi outfit", zap.Error(err))
|
||||
}
|
||||
}
|
||||
|
||||
func handleDonateRP(s *Session, amount uint16, guild *Guild, _type int) []byte {
|
||||
@@ -299,7 +315,9 @@ func handleMsgMhfOperateGuildMember(s *Session, p mhfpacket.MHFPacket) {
|
||||
if err != nil {
|
||||
doAckSimpleFail(s, pkt.AckHandle, make([]byte, 4))
|
||||
} else {
|
||||
_ = s.server.mailRepo.SendMail(mail.SenderID, mail.RecipientID, mail.Subject, mail.Body, 0, 0, false, true)
|
||||
if err := s.server.mailRepo.SendMail(mail.SenderID, mail.RecipientID, mail.Subject, mail.Body, 0, 0, false, true); err != nil {
|
||||
s.logger.Warn("Failed to send guild member operation mail", zap.Error(err))
|
||||
}
|
||||
if s.server.Registry != nil {
|
||||
s.server.Registry.NotifyMailToCharID(pkt.CharID, s, &mail)
|
||||
} else {
|
||||
|
||||
@@ -148,7 +148,9 @@ func handleMsgMhfAnswerGuildScout(s *Session, p mhfpacket.MHFPacket) {
|
||||
bf.WriteUint32(guild.ID)
|
||||
doAckBufSucceed(s, pkt.AckHandle, bf.Data())
|
||||
for _, m := range msgs {
|
||||
_ = s.server.mailRepo.SendMail(m.senderID, m.recipientID, m.subject, m.body, 0, 0, false, true)
|
||||
if err := s.server.mailRepo.SendMail(m.senderID, m.recipientID, m.subject, m.body, 0, 0, false, true); err != nil {
|
||||
s.logger.Warn("Failed to send guild scout response mail", zap.Error(err))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -402,12 +402,14 @@ func addWarehouseItem(s *Session, item mhfitem.MHFItemStack) {
|
||||
|
||||
func warehouseGetItems(s *Session, index uint8) []mhfitem.MHFItemStack {
|
||||
initializeWarehouse(s)
|
||||
var data []byte
|
||||
var items []mhfitem.MHFItemStack
|
||||
if index > 10 {
|
||||
return items
|
||||
}
|
||||
data, _ = s.server.houseRepo.GetWarehouseItemData(s.charID, index)
|
||||
data, err := s.server.houseRepo.GetWarehouseItemData(s.charID, index)
|
||||
if err != nil {
|
||||
s.logger.Warn("Failed to load warehouse item data", zap.Error(err))
|
||||
}
|
||||
if len(data) > 0 {
|
||||
box := byteframe.NewByteFrameFromBytes(data)
|
||||
numStacks := box.ReadUint16()
|
||||
@@ -420,12 +422,14 @@ func warehouseGetItems(s *Session, index uint8) []mhfitem.MHFItemStack {
|
||||
}
|
||||
|
||||
func warehouseGetEquipment(s *Session, index uint8) []mhfitem.MHFEquipment {
|
||||
var data []byte
|
||||
var equipment []mhfitem.MHFEquipment
|
||||
if index > 10 {
|
||||
return equipment
|
||||
}
|
||||
data, _ = s.server.houseRepo.GetWarehouseEquipData(s.charID, index)
|
||||
data, err := s.server.houseRepo.GetWarehouseEquipData(s.charID, index)
|
||||
if err != nil {
|
||||
s.logger.Warn("Failed to load warehouse equipment data", zap.Error(err))
|
||||
}
|
||||
if len(data) > 0 {
|
||||
box := byteframe.NewByteFrameFromBytes(data)
|
||||
numStacks := box.ReadUint16()
|
||||
|
||||
@@ -188,9 +188,11 @@ func handleMsgMhfEnumerateOrder(s *Session, p mhfpacket.MHFPacket) {
|
||||
func handleMsgMhfGetExtraInfo(s *Session, p mhfpacket.MHFPacket) {}
|
||||
|
||||
func userGetItems(s *Session) []mhfitem.MHFItemStack {
|
||||
var data []byte
|
||||
var items []mhfitem.MHFItemStack
|
||||
data, _ = s.server.userRepo.GetItemBox(s.userID)
|
||||
data, err := s.server.userRepo.GetItemBox(s.userID)
|
||||
if err != nil {
|
||||
s.logger.Warn("Failed to load user item box", zap.Error(err))
|
||||
}
|
||||
if len(data) > 0 {
|
||||
box := byteframe.NewByteFrameFromBytes(data)
|
||||
numStacks := box.ReadUint16()
|
||||
@@ -247,7 +249,10 @@ func handleMsgMhfCheckWeeklyStamp(s *Session, p mhfpacket.MHFPacket) {
|
||||
updated = 1
|
||||
}
|
||||
|
||||
total, redeemed, _ = s.server.stampRepo.GetTotals(s.charID, pkt.StampType)
|
||||
total, redeemed, err = s.server.stampRepo.GetTotals(s.charID, pkt.StampType)
|
||||
if err != nil {
|
||||
s.logger.Warn("Failed to get stamp totals", zap.Error(err))
|
||||
}
|
||||
bf := byteframe.NewByteFrame()
|
||||
bf.WriteUint16(total)
|
||||
bf.WriteUint16(redeemed)
|
||||
|
||||
@@ -212,7 +212,11 @@ func handleMsgMhfReadMercenaryW(s *Session, p mhfpacket.MHFPacket) {
|
||||
var cid uint32
|
||||
var name string
|
||||
if pactID > 0 {
|
||||
cid, name, _ = s.server.charRepo.FindByRastaID(pactID)
|
||||
var findErr error
|
||||
cid, name, findErr = s.server.charRepo.FindByRastaID(pactID)
|
||||
if findErr != nil {
|
||||
s.logger.Warn("Failed to find character by rasta ID", zap.Error(findErr))
|
||||
}
|
||||
bf.WriteUint8(1) // numLends
|
||||
bf.WriteUint32(uint32(pactID))
|
||||
bf.WriteUint32(cid)
|
||||
|
||||
@@ -202,7 +202,11 @@ func handleMsgMhfEnumerateRengokuRanking(s *Session, p mhfpacket.MHFPacket) {
|
||||
guild, _ := s.server.guildRepo.GetByCharID(s.charID)
|
||||
var isApplicant bool
|
||||
if guild != nil {
|
||||
isApplicant, _ = s.server.guildRepo.HasApplication(guild.ID, s.charID)
|
||||
var appErr error
|
||||
isApplicant, appErr = s.server.guildRepo.HasApplication(guild.ID, s.charID)
|
||||
if appErr != nil {
|
||||
s.logger.Warn("Failed to check guild application status", zap.Error(appErr))
|
||||
}
|
||||
}
|
||||
if isApplicant {
|
||||
guild = nil
|
||||
|
||||
Reference in New Issue
Block a user