diff --git a/TODO.md b/TODO.md index 95ca60f..0456bd8 100644 --- a/TODO.md +++ b/TODO.md @@ -557,11 +557,30 @@ Current status: - SDK `23/106` / wire `0x6a` Remove Job From Queue (old) - SDK `23/107` / wire `0x6b` Get Queue Job List (old) - SDK `23/108` / wire `0x6c` Read Queue Job Entry (old) + - SDK `23/109` / wire `0x6d` Change Queue Job Entry (old) + - SDK `23/110` / wire `0x6e` Change Queue Job Position -- disabled future stub + - SDK `23/111` / wire `0x6f` Attach Queue Server To Queue + - SDK `23/112` / wire `0x70` Detach Queue Server From Queue + - SDK `23/113` / wire `0x71` Service Queue Job (old) + - SDK `23/114` / wire `0x72` Finish Servicing Queue Job (old) + - SDK `23/115` / wire `0x73` Abort Servicing Queue Job (old) + - SDK `23/116` / wire `0x74` Change To Client Rights (old) -- disabled future stub + - SDK `23/117` / wire `0x75` Restore Queue Server Rights -- disabled future stub + - SDK `23/118` / wire `0x76` Read Queue Server Current Status (old) -- disabled future stub + - SDK `23/119` / wire `0x77` Set Queue Server Current Status -- disabled future stub + - SDK `23/120` / wire `0x78` Get Queue Job File Size (old) - SDK `23/121` / wire `0x79` Create Queue Job And File - SDK `23/122` / wire `0x7a` Read Queue Job Entry - SDK `23/126` / wire `0x7e` Set Queue Current Status - SDK `23/127` / wire `0x7f` Close File And Start Queue Job - SDK `23/128` / wire `0x80` Remove Job From Queue + - SDK `23/129` / wire `0x81` Get Queue Job List + - SDK `23/130` / wire `0x82` Change Job Priority -- disabled future stub + - SDK `23/131` / wire `0x83` Finish Servicing Queue Job + - SDK `23/132` / wire `0x84` Abort Servicing Queue Job + - SDK `23/133` / wire `0x85` Change To Client Rights -- disabled future stub + - SDK `23/134` / wire `0x86` Read Queue Server Current Status -- disabled future stub + - SDK `23/135` / wire `0x87` Get Queue Job File Size - SDK `23/15` request payload offsets match the current parser: `LastSearchIndex`, `DirectoryHandle`, `SearchAttributes`, `FileNameLen`, and `FileName`. The reply shape also matches the documented fixed file @@ -619,6 +638,14 @@ Current status: noted where the current compatibility parser still consumes or emits old 16-bit job-number fields. +- Remaining queue rights/status/priority calls SDK `23/110`, SDK `23/116` + through SDK `23/119`, SDK `23/130`, SDK `23/133`, and SDK `23/134` were + compared against the NDK/Core-Protocols PDF and `nwqms.h`/`nwqueue.h` + prototypes. They are not implemented in the current queue backend. `nwbind.c` + now documents them as disabled future stubs rather than leaving the wire slots + implicit: job-position reorder, queue-server identity switch/restore, the + per-server 64-byte status record, and newer long-priority/client-rights forms. + Follow-up: - Verify SDK `23/15` search-index byte order against a real old requester or @@ -647,14 +674,13 @@ Follow-up: fields in the WebSDK/include material, while the current compatibility parser often reuses the old 16-bit layout. SDK `23/126` / wire `0x7e` also documents a long queue-status field but the shared parser consumes only one byte. -- Continue the `0x2222/23` audit with the remaining queue rights/status calls - not yet documented in `src/nwbind.c`: SDK `23/116` / wire `0x74` Change To - Client Rights (old), SDK `23/117` / wire `0x75` Restore Queue Server Rights, - SDK `23/118` / wire `0x76` Read Queue Server Current Status (old), SDK - `23/119` / wire `0x77` Set Queue Server Current Status, SDK `23/130` / wire - `0x82` Change Queue Job Position, SDK `23/133` / wire `0x85` Change To Client - Rights, SDK `23/134` / wire `0x86` Read Queue Server Current Status, and any - matching helper/prehandler paths. +- Implement or deliberately hard-fail the disabled queue future stubs once the + queue backend can support their semantics: SDK `23/110` / wire `0x6e` Change + Queue Job Position, SDK `23/116` / wire `0x74` and SDK `23/133` / wire `0x85` + Change To Client Rights, SDK `23/117` / wire `0x75` Restore Queue Server + Rights, SDK `23/118` / wire `0x76` and SDK `23/134` / wire `0x86` Read Queue + Server Current Status, SDK `23/119` / wire `0x77` Set Queue Server Current + Status, and SDK `23/130` / wire `0x82` Change Job Priority. - Audit the remaining forwarded `0x2222/23` management subfunctions in the files that actually handle them instead of treating the `nwconn.c` forwarding points as complete local implementations. diff --git a/src/nwbind.c b/src/nwbind.c index dde9b32..17c137d 100644 --- a/src/nwbind.c +++ b/src/nwbind.c @@ -2391,6 +2391,76 @@ static void handle_fxx(int gelen, int func) } break; +#if 0 + case 0x74: /* Change To Client Rights (old) */ + case 0x85: /* Change To Client Rights */ + { + /* + * SDK 23/116 / wire 0x74 Change To Client Rights (old) + * and SDK 23/133 / wire 0x85 Change To Client Rights. + * Request payload after SubFunctionCode: + * long QueueID (Hi-Lo) + * word JobNumber (Hi-Lo) for old wire 0x74 + * long JobNumber (Lo-Hi) for newer wire 0x85 + * Reply: no data. + * This is a queue-server identity switch: the server + * connection temporarily assumes the job owner's security + * equivalence and recalculates directory rights. The + * current code has no implementation for that connection + * identity transition, so the audited endpoint remains a + * disabled future stub. + */ + } + break; + + case 0x75: { /* Restore Queue Server Rights */ + /* + * SDK 23/117 / wire 0x75 Restore Queue Server Rights. + * Request payload after SubFunctionCode: none. + * Reply: no data. + * This must reverse SDK 23/116 or SDK 23/133 by restoring + * the queue server's original login identity and security + * equivalence list. It is disabled until the corresponding + * Change To Client Rights transition exists. + */ + } + break; + + case 0x76: /* Read Queue Server Current Status (old) */ + case 0x86: /* Read Queue Server Current Status */ + { + /* + * SDK 23/118 / wire 0x76 Read Queue Server Current Status + * (old) and SDK 23/134 / wire 0x86 Read Queue Server + * Current Status. + * Request payload after SubFunctionCode: + * long QueueID (Hi-Lo) + * long ServerID (Hi-Lo) + * byte ServerStation for old wire 0x76 + * long ServerStation (Lo-Hi) for newer wire 0x86 + * Reply: byte ServerStatusRecord[64]. + * The queue backend currently tracks attached servers well + * enough for queue status lists, but does not maintain this + * per-server 64-byte opaque status record. + */ + } + break; + + case 0x77: { /* Set Queue Server Current Status */ + /* + * SDK 23/119 / wire 0x77 Set Queue Server Current Status. + * Request payload after SubFunctionCode: + * long QueueID (Hi-Lo) + * byte ServerStatusRecord[64] + * Reply: no data. + * The 64-byte record is opaque to the queue manager, but it + * must be stored per attached queue server before the read + * status calls above can be implemented. + */ + } + break; +#endif + case 0x78: /* Get Queue Job File Size (old) */ case 0x87: /* Get Queue Job File Size */ { @@ -2486,6 +2556,26 @@ static void handle_fxx(int gelen, int func) break; #endif + +#if 0 + case 0x6e: { /* Change Queue Job Position (old) */ + /* + * SDK 23/110 / wire 0x6e Change Queue Job Position. + * Request payload after SubFunctionCode: + * long QueueID (Hi-Lo) + * word JobNumber (Hi-Lo) + * byte NewPosition + * Reply: no data. + * NetWare documents this as a 2.x/3.x queue-management + * call, but MARS-NWE currently has no queue helper that + * reorders job entries. Keep this as a disabled + * documentation stub until the queue backend can update + * every affected job position atomically. + */ + } + break; +#endif + case 0x7d : { /* Read Queue Current Status, new */ /* * SDK 23/125 / wire 0x7d Read Queue Current Status. @@ -2570,6 +2660,26 @@ static void handle_fxx(int gelen, int func) completition=(uint8)-result; }break; +#if 0 + case 0x82: { /* Change Job Priority */ + /* + * SDK 23/130 / wire 0x82 Change Job Priority. + * Request payload after SubFunctionCode: + * long QueueID (Hi-Lo) + * long JobNumber (Lo-Hi) + * long Priority (Lo-Hi) + * Reply: no data. + * This is not the older SDK 23/110 / wire 0x6e Change + * Queue Job Position byte-position call; it changes the + * long priority field in the newer queue job structure. + * The queue backend does not expose a priority update helper + * yet, so keep the endpoint documented as a disabled future + * stub. + */ + } + break; +#endif + case 0x72: /* finish servicing queue job (old)*/ case 0x83: { /* finish servicing queue job */ /*