docs: audit async synchronization stubs

This commit is contained in:
Mario Fetka
2026-06-02 20:23:45 +00:00
parent 54e6fc28c5
commit 4f58e2d085
3 changed files with 116 additions and 1 deletions

21
AI.md
View File

@@ -1220,4 +1220,23 @@ Next patch number should be `0253`.
- This is synchronization/lock-provider state, not server-management or
directory state.
Next patch number should be `0258`.
## 2026-06-02 - Patch 0258 async synchronization direct stubs 105/107/108/109
- Continued NDK-first after Clear Lock Wait Node with the missing direct
asynchronous synchronization endpoints in `src/nwconn.c`:
- `105` / wire `0x69` Log File (old)
- `107` / wire `0x6b` Log Logical Record
- `108` / wire `0x6c` Lock Logical Record Set
- `109` / wire `0x6d` Log Physical Record
- These are NetWare-3.x/4.x-relevant endpoints. The NDK also lists 5.x, but
this audit keeps only the 3.x/4.x contract.
- Patch `0258` adds disabled source stubs only. Runtime behavior is unchanged.
- Do not map these direct async-capable calls onto the existing old
synchronous handlers (`03`, `09`, `10`, `26`) or namespace handlers
(`87/36`, `87/67`) without a real provider design. The request encodings and
async wait-node semantics differ.
- These calls share state requirements with `112` Clear Lock Wait Node: pending
lock allocation, async wait-node lifetime, and correct completion-code
mapping.
Next patch number should be `0259`.

26
TODO.md
View File

@@ -1857,3 +1857,29 @@ Follow-up:
planned 4.x endpoint after Clear Lock Wait Node. Keep active fall-through
handlers intact when shared logic is intentional, and add only adjacent
per-case Request/Response notes for documentation-only patches.
### Async synchronization direct stubs 105, 107, 108, 109
Current status:
- Patch `0258` continues NDK-first after Clear Lock Wait Node with the
missing NetWare-3.x/4.x direct asynchronous synchronization endpoints in
`src/nwconn.c`:
- `105` / wire `0x69` Log File (old)
- `107` / wire `0x6b` Log Logical Record
- `108` / wire `0x6c` Lock Logical Record Set
- `109` / wire `0x6d` Log Physical Record
- They are added only as disabled source stubs because the existing old
handlers (`03`, `09`, `10`, `26`) and namespace handlers (`87/36`, `87/67`)
are different request encodings and do not implement the async-capable direct
105/107/108/109 contracts.
- Runtime behavior is unchanged. Do not fake success for these endpoints from
the existing synchronous log/lock tables; they need real async WaitNode
ownership shared with `112` Clear Lock Wait Node.
Follow-up:
- Continue NDK-first with the next documented NetWare 1.x/2.x/3.x endpoint or
planned 4.x endpoint after the async synchronization group. Keep active
fall-through handlers intact when shared logic is intentional, and add only
adjacent per-case Request/Response notes for documentation-only patches.

View File

@@ -7665,6 +7665,76 @@ static int handle_ncp_serv(void)
}
break;
#if 0
case 0x69 : { /* SDK 105 / wire 0x69 Log File (old).
* Source outcome: no active direct case exists. The
* old SDK 03 Log File and namespace SDK 87/36 Log File
* paths are separate compatibility encodings and must not
* be treated as proof that direct 105 is implemented.
* NetWare scope: 3.x/4.x compatibility endpoint.
* Request: FunctionCode=105, DirectoryHandle, LockFlag,
* LockTimeout word Hi-Lo, FileNameLen, FileName.
* Response: no payload; Completion reports success,
* ERR_LOCK_WAITING, No Open Privileges, Server Out Of
* Memory, or Lock Error.
* Future owner: filesystem/lock provider with real
* asynchronous WaitNode support for pending locks.
*/
completition = 0xfb;
}
break;
case 0x6b : { /* SDK 107 / wire 0x6b Log Logical Record.
* Source outcome: no active direct case exists. The old
* SDK 09 Log Logical Record is implemented through the
* old direct layout and does not cover the async-capable
* SDK 107 layout.
* NetWare scope: 3.x/4.x compatibility endpoint.
* Request: FunctionCode=107, LockFlag, LockTimeout word
* Hi-Lo, SynchNameLen, SynchName.
* Response: no payload; Completion reports success,
* Lock Waiting Error, Server Out Of Memory, or Lock Error.
* Future owner: logical-record lock provider with real
* async wait-node lifetime.
*/
completition = 0xfb;
}
break;
case 0x6c : { /* SDK 108 / wire 0x6c Lock Logical Record Set.
* Source outcome: no active direct case exists. The old
* SDK 10 Lock Logical Record Set currently remains a
* separate old-layout handler.
* NetWare scope: 3.x/4.x compatibility endpoint.
* Request: FunctionCode=108, LockFlag, LockTimeout word
* Hi-Lo.
* Response: no payload; Completion reports success,
* ERR_LOCK_WAITING, or Lock Error.
* Future owner: logical-record set lock provider.
*/
completition = 0xfb;
}
break;
case 0x6d : { /* SDK 109 / wire 0x6d Log Physical Record.
* Source outcome: no active direct case exists. The old
* SDK 26 Log Physical Record and namespace SDK 87/67
* Log Physical Record use different request encodings.
* NetWare scope: 3.x/4.x compatibility endpoint.
* Request: FunctionCode=109, LockFlag, NWFileHandle[6],
* LockAreaStartOffset long Hi-Lo, LockAreaLen long Hi-Lo,
* LockTimeout word Hi-Lo.
* Response: no payload; Completion reports success,
* ERR_LOCK_WAITING, Invalid File Handle, Server Out Of
* Memory, Lock Collision, or Lock Error.
* Future owner: physical-record lock provider with real
* async wait-node lifetime.
*/
completition = 0xfb;
}
break;
#endif
case 0x68 : { /* NDS NCP / NDS Fragger protocol. */
#if MARS_NWE_4
/*