Commit Graph

39 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
24ccc167fe fix(channelserver): add fail ACKs to silent error paths to prevent client softlocks
Handlers that log errors and return without sending a MsgSysAck leave
the client waiting indefinitely. Add doAckSimpleFail/doAckBufFail to
14 error paths across 4 files, matching the pattern already used in
~70 other error paths across the codebase.

Affected handlers:
- handleMsgMhfGetCafeDuration (1 path)
- handleMsgMhfSavedata (1 path)
- handleMsgMhfArrangeGuildMember (3 paths)
- handleMsgMhfEnumerateGuildMember (5 paths)
- handleMsgSysLogin (4 paths)
- handleMsgSysIssueLogkey (1 path)
2026-02-20 19:35:25 +01:00
Houmgaor
d32e77efba refactor: replace panic calls with structured error handling
Replace ~25 panic() calls in non-fatal code paths with proper
s.logger.Error + return patterns. Panics in handler code crashed
goroutines (caught by defer/recover but still disruptive) instead
of failing gracefully.

Key changes:
- SJISToUTF8 now returns (string, error); all 30+ callers updated
- Handler DB/IO panics replaced with log + return/ack fail
- Unhandled switch-case panics replaced with logger.Error
- Sign server Accept() panic replaced with log + continue
- Dead unreachable panic in guild_model.go removed
- deltacomp patch error logs and returns partial data

Panics intentionally kept: ByteFrame sentinel, unimplemented
packet stubs, os.Exit in main.go.
2026-02-20 19:11:41 +01:00
Houmgaor
5f3c843082 refactor(config): eliminate ErupeConfig global variable
Replace the mutable global `_config.ErupeConfig` with dependency
injection across 79 files. Config is now threaded through existing
paths: `ClientContext.RealClientMode` for packet encoding, `s.server.
erupeConfig` for channel handlers, and explicit parameters for utility
functions. This removes hidden coupling, enables test parallelism
without global save/restore, and prevents low-level packages from
reaching up to the config layer.

Key changes:
- Enrich ClientContext with RealClientMode for packet files
- Add mode parameter to CryptConn, mhfitem, mhfcourse functions
- Convert handlers_commands init() to lazy sync.Once initialization
- Delete global var, init(), and helper functions from config.go
- Update all tests to pass config explicitly
2026-02-20 17:07:42 +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
47f7a1f636 fix(channelserver): handle bare Exec errors and filter expected ErrNoRows
138 bare db.Exec calls across 22 handler files silently dropped write
errors. Each is now wrapped with error check and zap logging.

4 QueryRow sites that legitimately return sql.ErrNoRows during normal
operation (new player mezfes, festa rankings, empty guild item box)
now filter it out to reduce log noise.
2026-02-17 23:33:44 +01:00
Houmgaor
46bbb6adf9 fix: resolve all remaining lint errors (errcheck) across 49 files
Fix unchecked error returns on bf.Seek(), db.Exec(), QueryRow().Scan(),
pkt.Build(), logger.Sync(), and binary.Write() calls. The linter now
passes with 0 errors, build compiles, and all tests pass with -race.
2026-02-17 18:07:38 +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
b3305d1185 Update handlers_cafe.go 2025-01-15 00:38:12 +11:00
wish
12c7774cc1 fix GetCafeDuration 2024-06-25 20:35:56 +10:00
wish
e12f444b8d fix GetCafeDuration 2024-06-16 18:16:12 +10:00
wish
100ec30fba fix GetCafeDuration 2024-06-16 17:46:12 +10:00
wish
ca80a98141 i18n proposal 2024-01-03 04:22:25 +11:00
wish
b3af01b803 use seconds for arbitrary durations in config 2023-11-26 18:54:04 +11:00
wish
b7f9751787 handle BoostTime packets 2023-07-02 22:56:52 +10:00
wish
bcb71536ec initial rights v4 concept 2023-03-11 23:17:14 +11:00
wish
b6fcc1ca14 add option to change daily quest allowance 2023-03-09 20:31:39 +11:00
wish
29988f2bdd fix disable boost time 2023-03-09 19:33:50 +11:00
wish
986a0034c8 add various gameplay options 2023-03-09 19:23:31 +11:00
wish
1158b60638 fix netcafe timestamp 2023-03-04 23:49:21 +11:00
wish
e811dd1274 initial time fix 2023-03-04 21:43:10 +11:00
wish
7ed3702cc0 make cafe overflow errors not fatal 2023-01-29 21:37:16 +11:00
wish
7bede20f38 track etc points 2023-01-22 15:16:00 +11:00
wish
5a9d22a28a add point limitations 2023-01-08 19:16:45 +11:00
wish
3294d0e222 Merge pull request #53 from ZeruLight/feature/lang
feature/languages
2022-11-12 13:37:46 +11:00
wish
c7ba4bd3fa fix netcafe time reset 2022-11-10 14:43:23 +11:00
wish
10b2ddcfd7 map language to server instead of session 2022-11-09 23:50:40 +11:00
wish
7789424a08 initial multi-language concept 2022-11-07 00:35:45 +11:00
wish
84f5a0ad42 only accumulate cafeTime with course 2022-11-02 20:57:45 +11:00
wish
fda2e74442 persist cafe time 2022-10-24 16:51:56 +11:00
wish
9560cdc7df adjust wording 2022-10-24 09:25:20 +11:00
wish
25a6527c93 automate netcafe reset 2022-10-24 09:14:57 +11:00
wish
0edfd255fd correct backwards comparison 2022-08-13 21:46:05 +10:00
wish
440b73f696 implement netcafe points and boost time 2022-08-13 21:23:02 +10:00
wish
d8072ee06e default netcafe rewards and maintenance 2022-08-13 18:22:56 +10:00
wish
0ba9adcc88 handle receiving multiple items 2022-08-13 17:46:17 +10:00
wish
ac90c2dd09 correct minutes->seconds 2022-08-13 17:23:33 +10:00
wish
3bb0ab6295 cleanup logic and update cafe time 2022-08-13 17:21:24 +10:00
wish
18989e9435 initial netcafe implementation 2022-08-13 16:25:32 +10:00