Commit Graph

22 Commits

Author SHA1 Message Date
Houmgaor
458d8c9397 refactor(channelserver): add numeric column helpers and extract protocol constants
Add readCharacterInt/adjustCharacterInt helpers for single-column
integer operations on the characters table. Eliminates fmt.Sprintf
SQL construction in handlers_misc.go and replaces inline queries
across cafe, kouryou, and mercenary handlers.

Second round of protocol constant extraction: adds constants_time.go
(secsPerDay, secsPerWeek), constants_raviente.go (register IDs,
semaphore constants), and named constants across 14 handler files
replacing raw hex/numeric literals. Updates anti-patterns doc to
mark #4 (magic numbers) as substantially fixed.
2026-02-20 21:18:40 +01:00
Houmgaor
a752c5187e fix(channelserver): send ACK on empty Raviente register payload
handleMsgSysOperateRegister returned without sending an ACK when the
payload was empty, causing the client to softlock waiting for a response.
Send doAckBufSucceed with nil data on the early-return path to match
the success-path ACK type.

Also update tests to expect error returns instead of panics from
unimplemented Build/Parse stubs (matching prior panic→error refactor),
and mark resolved anti-patterns in docs.
2026-02-20 20:05:52 +01:00
Houmgaor
604d53d6d7 fix(channelserver): validate packet fields before use in handlers
Several handlers used packet fields as array indices or SQL column
names without bounds checking, allowing crafted packets to panic the
server or produce malformed SQL.

Panic fixes (high severity):
- handlers_mail: bounds check AccIndex against mailList length
- handlers_misc: validate ArmourID >= 10000 and MogType <= 4
- handlers_mercenary: check RawDataPayload length before slicing
- handlers_house: check RawDataPayload length in SaveDecoMyset
- handlers_register: guard empty RawDataPayload in OperateRegister

SQL column name fixes (medium severity):
- handlers_misc: early return on unknown PointType
- handlers_items: reject unknown StampType in weekly stamp handlers
- handlers_achievement: cap AchievementID at 32
- handlers_goocoo: skip goocoo.Index > 4
- handlers_house: cap BoxIndex for warehouse operations
- handlers_tower: fix MissionIndex=0 bypassing normalization guard
2026-02-19 00:23:04 +01:00
Houmgaor
0d07a1f698 refactor(mhfpacket): rename 15 Unk fields with identified meanings
Replace unknown field names with descriptive names based on handler
logic analysis, switch dispatch patterns, DB query context, and
inline comments:

- ObjectHandleID, IsQuest, ItemIDCount, MaxCount, TokenLength,
  FormatVersion, LogoutType (high confidence from comments/constants)
- QueryType, DataType, MissionIndex, CheckOnly, RequestType,
  ExchangeType, TournamentID (confirmed by handler switch/if usage)

Also fix MsgSysLogout.Build calling ReadUint8 instead of WriteUint8.
2026-02-18 21:48:08 +01:00
Houmgaor
2bd5f98f32 docs: add doc.go files and godoc comments to all packages
Add package-level documentation (doc.go) to all 22 first-party
packages and godoc comments to ~150 previously undocumented
exported symbols across common/, network/, and server/.
2026-02-18 21:39:13 +01:00
Houmgaor
264b0ced6b refactor(channelserver): extract Raviente struct and methods into raviente.go
Consolidate Raviente-related code from sys_channel_server.go and
handlers_register.go into a dedicated file for better organization.
2026-02-18 19:38:22 +01:00
Houmgaor
2a0e3e2c84 fix: re-enable CI lint job and fix ~65 lint errors (partial)
Re-enable the golangci-lint job in CI (disabled Oct 2025), update to
Go 1.25 and golangci-lint-action v7. Fix errcheck, gosimple S1009,
staticcheck SA4031 and SA2001 errors across 54 files. Remaining ~39
lint errors will be addressed in follow-up commits.
2026-02-17 17:59:00 +01:00
wish
d1dfc3fbb1 packet queue fix proposal 2025-02-18 03:12:09 +11:00
wish
85fc76edd5 update parsing of many packets 2023-11-19 02:34:02 +11:00
wish
4a35be488c rework Semaphores 2023-09-03 00:00:08 +10:00
wish
5b5621a3d8 fix and rework various Raviente ID systems 2023-08-30 23:43:56 +10:00
wish
42abdfb0c7 change getRaviSemaphore scope & handle RegisterEvent 2023-08-30 22:29:49 +10:00
wish
813a3df6a7 correctly parse RegisterEvent & move handlers 2023-08-30 22:18:37 +10:00
wish
81e8d21d4b clean up 2023-08-30 21:08:40 +10:00
wish
1685f409e7 initial ravi-v3 commit 2023-08-27 22:16:51 +10:00
wish
6860098829 implement customisable Raviente latency 2023-08-09 23:20:50 +10:00
wish
8df5697dd3 make raviente multiplier more accurate 2023-03-09 22:56:21 +11:00
wish
955ed73dbb test using alternative tracking raviente semaphore 2023-02-08 00:03:23 +11:00
wish
717a34b5b9 implement automatic damage scaling for raviente 2023-02-04 22:41:06 +11:00
wish
d7cc7ab5e3 fix invalid semaphore id for raviente support 2022-08-14 18:52:53 +10:00
wish
c0fd2f8992 raviente cleanup and fixes 2022-07-29 04:55:49 +10:00
wish
2c0e7a5267 repository cleanup 2022-07-29 03:25:23 +10:00