nwconn: document TTS unavailable status
All checks were successful
Source release / source-package (push) Successful in 50s

Add WebSDK context to the Transaction Tracking System endpoint handling.

The WebSDK documents NCP 0x2222/34/00 TTS Is Available as a
completion-code-only status probe with no reply data. A completion code of
0x00 means Transaction Tracking Unavailable, 0xfd means Disabled, and 0xff
means Available. The SDK headers expose this call as NWTTSIsAvailable().

MARS-NWE does not implement TTS rollback semantics, transaction files,
transaction status tracking, or the begin/end/abort transaction state machine.
Keep reporting the documented unavailable status for the availability probe,
but leave state-changing TTS subfunctions unsupported rather than pretending
to start or complete transactions without rollback behavior.

lwared and the Rust nwserver implementation do not provide a fuller TTS
transaction implementation to mirror, so keep the remaining TTS work tracked
as deferred optional protocol work in TODO.md.

This preserves existing protocol behavior while documenting why the only
locally handled TTS subfunction is the availability probe.
This commit is contained in:
Mario Fetka
2026-05-30 00:59:54 +02:00
parent 98f45194b1
commit 3421fceda3
2 changed files with 39 additions and 3 deletions

View File

@@ -2359,10 +2359,27 @@ static int handle_ncp_serv(void)
}
break;
case 0x22 : { /* div TTS Calls */
case 0x22 : { /* Transaction Tracking System (TTS) calls */
int ufunc = (int) *requestdata;
if (!ufunc) completition=0; /* TTS not availible */
else completition=0xfb; /* request not known */
/*
* WebSDK / headers:
* NCP 0x2222/34/00 TTS Is Available has no reply data.
* Its completion code is the status value: 0x00 means
* Transaction Tracking Unavailable, 0xfd means Disabled,
* and 0xff means Available. The SDK headers expose this
* as NWTTSIsAvailable().
*
* MARS-NWE does not implement transaction tracking. Report
* the documented unavailable status for the availability
* probe, but keep the state-changing TTS subfunctions
* unsupported rather than pretending to begin, end, or abort
* transactions without rollback semantics.
*
* Cross-check: lwared and the Rust nwserver code do not
* provide a fuller TTS transaction implementation to mirror.
*/
if (!ufunc) completition=0; /* TTS unavailable */
else completition=0xfb; /* request not known */
} break;
case 0x23 : { /* div AFP Calls */