diff --git a/server/channelserver/handlers_diva.go b/server/channelserver/handlers_diva.go index 78847b2e3..db45d954f 100644 --- a/server/channelserver/handlers_diva.go +++ b/server/channelserver/handlers_diva.go @@ -84,7 +84,9 @@ func handleMsgMhfGetUdSchedule(s *Session, p mhfpacket.MHFPacket) { } else { defer func() { _ = rows.Close() }() for rows.Next() { - _ = rows.Scan(&id, &start) + if err := rows.Scan(&id, &start); err != nil { + s.logger.Error("Failed to scan diva schedule row", zap.Error(err)) + } } } diff --git a/server/channelserver/handlers_house.go b/server/channelserver/handlers_house.go index 226975fc8..9185c3905 100644 --- a/server/channelserver/handlers_house.go +++ b/server/channelserver/handlers_house.go @@ -330,7 +330,9 @@ func handleMsgMhfAcquireTitle(s *Session, p mhfpacket.MHFPacket) { func handleMsgMhfResetTitle(s *Session, p mhfpacket.MHFPacket) {} func initializeWarehouse(s *Session) { - s.server.houseRepo.InitializeWarehouse(s.charID) + if err := s.server.houseRepo.InitializeWarehouse(s.charID); err != nil { + s.logger.Error("Failed to initialize warehouse", zap.Error(err), zap.Uint32("charID", s.charID)) + } } func handleMsgMhfOperateWarehouse(s *Session, p mhfpacket.MHFPacket) { diff --git a/server/channelserver/handlers_house_test.go b/server/channelserver/handlers_house_test.go index 9a2149cff..066ce079f 100644 --- a/server/channelserver/handlers_house_test.go +++ b/server/channelserver/handlers_house_test.go @@ -529,7 +529,7 @@ func TestOperateWarehouse_Op0_GetBoxNames(t *testing.T) { _, _, session, charID := setupHouseTest(t) // Initialize warehouse and rename a box - session.server.houseRepo.InitializeWarehouse(charID) + _ = session.server.houseRepo.InitializeWarehouse(charID) _ = session.server.houseRepo.RenameWarehouseBox(charID, 0, 0, "MyItems") pkt := &mhfpacket.MsgMhfOperateWarehouse{ diff --git a/server/channelserver/handlers_misc.go b/server/channelserver/handlers_misc.go index 8a0dafbe0..69c94bee5 100644 --- a/server/channelserver/handlers_misc.go +++ b/server/channelserver/handlers_misc.go @@ -261,7 +261,10 @@ func handleMsgMhfGetTrendWeapon(s *Session, p mhfpacket.MHFPacket) { j := 0 for rows.Next() { trendWeapons[i][j].WeaponType = i - _ = rows.Scan(&trendWeapons[i][j].WeaponID) + if err := rows.Scan(&trendWeapons[i][j].WeaponID); err != nil { + s.logger.Error("Failed to scan trend weapon", zap.Error(err)) + break + } j++ } } diff --git a/server/channelserver/handlers_quest.go b/server/channelserver/handlers_quest.go index a5670ebb5..f9ae36256 100644 --- a/server/channelserver/handlers_quest.go +++ b/server/channelserver/handlers_quest.go @@ -269,7 +269,9 @@ func makeEventQuest(s *Session, rows *sql.Rows) ([]byte, error) { var questId, activeDuration, inactiveDuration, flags int var maxPlayers, questType uint8 var startTime time.Time - _ = rows.Scan(&id, &maxPlayers, &questType, &questId, &mark, &flags, &startTime, &activeDuration, &inactiveDuration) + if err := rows.Scan(&id, &maxPlayers, &questType, &questId, &mark, &flags, &startTime, &activeDuration, &inactiveDuration); err != nil { + return nil, fmt.Errorf("failed to scan event quest row: %w", err) + } data := loadQuestFile(s, questId) if data == nil { diff --git a/server/channelserver/repo_house.go b/server/channelserver/repo_house.go index 7c905be28..6fc17c165 100644 --- a/server/channelserver/repo_house.go +++ b/server/channelserver/repo_house.go @@ -97,12 +97,14 @@ func (r *HouseRepository) UpdateMission(charID uint32, data []byte) error { // Warehouse methods // InitializeWarehouse ensures a warehouse row exists for the character. -func (r *HouseRepository) InitializeWarehouse(charID uint32) { +func (r *HouseRepository) InitializeWarehouse(charID uint32) error { var t int err := r.db.QueryRow(`SELECT character_id FROM warehouse WHERE character_id=$1`, charID).Scan(&t) if err != nil { - _, _ = r.db.Exec(`INSERT INTO warehouse (character_id) VALUES ($1)`, charID) + _, err = r.db.Exec(`INSERT INTO warehouse (character_id) VALUES ($1)`, charID) + return err } + return nil } const warehouseNamesSQL = `