mirror of
https://github.com/Mezeporta/Erupe.git
synced 2025-12-15 08:25:09 +01:00
make various handlers not error fatally
This commit is contained in:
@@ -588,10 +588,11 @@ func handleMsgMhfEnumerateUnionItem(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
bf := byteframe.NewByteFrame()
|
bf := byteframe.NewByteFrame()
|
||||||
err := s.server.db.QueryRow("SELECT item_box FROM users, characters WHERE characters.id = $1 AND users.id = characters.user_id", int(s.charID)).Scan(&boxContents)
|
err := s.server.db.QueryRow("SELECT item_box FROM users, characters WHERE characters.id = $1 AND users.id = characters.user_id", int(s.charID)).Scan(&boxContents)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
s.logger.Fatal("Failed to get shared item box contents from db", zap.Error(err))
|
s.logger.Error("Failed to get shared item box contents from db", zap.Error(err))
|
||||||
|
bf.WriteBytes(make([]byte, 4))
|
||||||
} else {
|
} else {
|
||||||
if len(boxContents) == 0 {
|
if len(boxContents) == 0 {
|
||||||
bf.WriteUint32(0x00)
|
bf.WriteBytes(make([]byte, 4))
|
||||||
} else {
|
} else {
|
||||||
amount := len(boxContents) / 4
|
amount := len(boxContents) / 4
|
||||||
bf.WriteUint16(uint16(amount))
|
bf.WriteUint16(uint16(amount))
|
||||||
@@ -616,7 +617,9 @@ func handleMsgMhfUpdateUnionItem(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
|
|
||||||
err := s.server.db.QueryRow("SELECT item_box FROM users, characters WHERE characters.id = $1 AND users.id = characters.user_id", int(s.charID)).Scan(&boxContents)
|
err := s.server.db.QueryRow("SELECT item_box FROM users, characters WHERE characters.id = $1 AND users.id = characters.user_id", int(s.charID)).Scan(&boxContents)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
s.logger.Fatal("Failed to get shared item box contents from db", zap.Error(err))
|
s.logger.Error("Failed to get shared item box contents from db", zap.Error(err))
|
||||||
|
doAckSimpleSucceed(s, pkt.AckHandle, make([]byte, 4))
|
||||||
|
return
|
||||||
} else {
|
} else {
|
||||||
amount := len(boxContents) / 4
|
amount := len(boxContents) / 4
|
||||||
oldItems = make([]Item, amount)
|
oldItems = make([]Item, amount)
|
||||||
@@ -664,9 +667,9 @@ func handleMsgMhfUpdateUnionItem(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
// Upload new item cache
|
// Upload new item cache
|
||||||
_, err = s.server.db.Exec("UPDATE users SET item_box = $1 FROM characters WHERE users.id = characters.user_id AND characters.id = $2", bf.Data(), int(s.charID))
|
_, err = s.server.db.Exec("UPDATE users SET item_box = $1 FROM characters WHERE users.id = characters.user_id AND characters.id = $2", bf.Data(), int(s.charID))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
s.logger.Fatal("Failed to update shared item box contents in db", zap.Error(err))
|
s.logger.Error("Failed to update shared item box contents in db", zap.Error(err))
|
||||||
}
|
}
|
||||||
doAckSimpleSucceed(s, pkt.AckHandle, []byte{0x00, 0x00, 0x00, 0x00})
|
doAckSimpleSucceed(s, pkt.AckHandle, make([]byte, 4))
|
||||||
}
|
}
|
||||||
|
|
||||||
func handleMsgMhfGetCogInfo(s *Session, p mhfpacket.MHFPacket) {}
|
func handleMsgMhfGetCogInfo(s *Session, p mhfpacket.MHFPacket) {}
|
||||||
|
|||||||
@@ -29,7 +29,9 @@ func handleMsgMhfSavedata(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
// diffs themselves are also potentially compressed
|
// diffs themselves are also potentially compressed
|
||||||
diff, err := nullcomp.Decompress(pkt.RawDataPayload)
|
diff, err := nullcomp.Decompress(pkt.RawDataPayload)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
s.logger.Fatal("Failed to decompress diff", zap.Error(err))
|
s.logger.Error("Failed to decompress diff", zap.Error(err))
|
||||||
|
doAckSimpleSucceed(s, pkt.AckHandle, make([]byte, 4))
|
||||||
|
return
|
||||||
}
|
}
|
||||||
// Perform diff.
|
// Perform diff.
|
||||||
s.logger.Info("Diffing...")
|
s.logger.Info("Diffing...")
|
||||||
@@ -39,7 +41,9 @@ func handleMsgMhfSavedata(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
// Regular blob update.
|
// Regular blob update.
|
||||||
saveData, err := nullcomp.Decompress(pkt.RawDataPayload)
|
saveData, err := nullcomp.Decompress(pkt.RawDataPayload)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
s.logger.Fatal("Failed to decompress savedata from packet", zap.Error(err))
|
s.logger.Error("Failed to decompress savedata from packet", zap.Error(err))
|
||||||
|
doAckSimpleSucceed(s, pkt.AckHandle, make([]byte, 4))
|
||||||
|
return
|
||||||
}
|
}
|
||||||
s.logger.Info("Updating save with blob")
|
s.logger.Info("Updating save with blob")
|
||||||
characterSaveData.decompSave = saveData
|
characterSaveData.decompSave = saveData
|
||||||
@@ -64,9 +68,9 @@ func handleMsgMhfSavedata(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
}
|
}
|
||||||
_, err = s.server.db.Exec("UPDATE characters SET name=$1 WHERE id=$2", characterSaveData.Name, s.charID)
|
_, err = s.server.db.Exec("UPDATE characters SET name=$1 WHERE id=$2", characterSaveData.Name, s.charID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
s.logger.Fatal("Failed to update character name in db", zap.Error(err))
|
s.logger.Error("Failed to update character name in db", zap.Error(err))
|
||||||
}
|
}
|
||||||
doAckSimpleSucceed(s, pkt.AckHandle, []byte{0x00, 0x00, 0x00, 0x00})
|
doAckSimpleSucceed(s, pkt.AckHandle, make([]byte, 4))
|
||||||
}
|
}
|
||||||
|
|
||||||
func grpToGR(n uint32) uint16 {
|
func grpToGR(n uint32) uint16 {
|
||||||
@@ -288,7 +292,7 @@ func handleMsgMhfSaveScenarioData(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
dumpSaveData(s, pkt.RawDataPayload, "scenario")
|
dumpSaveData(s, pkt.RawDataPayload, "scenario")
|
||||||
_, err := s.server.db.Exec("UPDATE characters SET scenariodata = $1 WHERE id = $2", pkt.RawDataPayload, s.charID)
|
_, err := s.server.db.Exec("UPDATE characters SET scenariodata = $1 WHERE id = $2", pkt.RawDataPayload, s.charID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
s.logger.Fatal("Failed to update scenario data in db", zap.Error(err))
|
s.logger.Error("Failed to update scenario data in db", zap.Error(err))
|
||||||
}
|
}
|
||||||
// Do this ack manually because it uses a non-(0|1) error code
|
// Do this ack manually because it uses a non-(0|1) error code
|
||||||
s.QueueSendMHF(&mhfpacket.MsgSysAck{
|
s.QueueSendMHF(&mhfpacket.MsgSysAck{
|
||||||
|
|||||||
@@ -19,7 +19,9 @@ func handleMsgMhfSaveRengokuData(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
dumpSaveData(s, pkt.RawDataPayload, "rengoku")
|
dumpSaveData(s, pkt.RawDataPayload, "rengoku")
|
||||||
_, err := s.server.db.Exec("UPDATE characters SET rengokudata=$1 WHERE id=$2", pkt.RawDataPayload, s.charID)
|
_, err := s.server.db.Exec("UPDATE characters SET rengokudata=$1 WHERE id=$2", pkt.RawDataPayload, s.charID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
s.logger.Fatal("Failed to update rengokudata savedata in db", zap.Error(err))
|
s.logger.Error("Failed to save rengokudata", zap.Error(err))
|
||||||
|
doAckSimpleSucceed(s, pkt.AckHandle, make([]byte, 4))
|
||||||
|
return
|
||||||
}
|
}
|
||||||
bf := byteframe.NewByteFrameFromBytes(pkt.RawDataPayload)
|
bf := byteframe.NewByteFrameFromBytes(pkt.RawDataPayload)
|
||||||
bf.Seek(71, 0)
|
bf.Seek(71, 0)
|
||||||
@@ -34,7 +36,7 @@ func handleMsgMhfSaveRengokuData(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
s.server.db.Exec("INSERT INTO rengoku_score (character_id) VALUES ($1)", s.charID)
|
s.server.db.Exec("INSERT INTO rengoku_score (character_id) VALUES ($1)", s.charID)
|
||||||
}
|
}
|
||||||
s.server.db.Exec("UPDATE rengoku_score SET max_stages_mp=$1, max_points_mp=$2, max_stages_sp=$3, max_points_sp=$4 WHERE character_id=$5", maxStageMp, maxScoreMp, maxStageSp, maxScoreSp, s.charID)
|
s.server.db.Exec("UPDATE rengoku_score SET max_stages_mp=$1, max_points_mp=$2, max_stages_sp=$3, max_points_sp=$4 WHERE character_id=$5", maxStageMp, maxScoreMp, maxStageSp, maxScoreSp, s.charID)
|
||||||
doAckSimpleSucceed(s, pkt.AckHandle, []byte{0x00, 0x00, 0x00, 0x00})
|
doAckSimpleSucceed(s, pkt.AckHandle, make([]byte, 4))
|
||||||
}
|
}
|
||||||
|
|
||||||
func handleMsgMhfLoadRengokuData(s *Session, p mhfpacket.MHFPacket) {
|
func handleMsgMhfLoadRengokuData(s *Session, p mhfpacket.MHFPacket) {
|
||||||
@@ -42,7 +44,7 @@ func handleMsgMhfLoadRengokuData(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
var data []byte
|
var data []byte
|
||||||
err := s.server.db.QueryRow("SELECT rengokudata FROM characters WHERE id = $1", s.charID).Scan(&data)
|
err := s.server.db.QueryRow("SELECT rengokudata FROM characters WHERE id = $1", s.charID).Scan(&data)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
s.logger.Fatal("Failed to get rengokudata savedata from db", zap.Error(err))
|
s.logger.Error("Failed to load rengokudata", zap.Error(err))
|
||||||
}
|
}
|
||||||
if len(data) > 0 {
|
if len(data) > 0 {
|
||||||
doAckBufSucceed(s, pkt.AckHandle, data)
|
doAckBufSucceed(s, pkt.AckHandle, data)
|
||||||
|
|||||||
Reference in New Issue
Block a user