Commit Graph

23 Commits

Author SHA1 Message Date
Mario Fetka
c80861b92b nwconn: implement extracted base handle restore
All checks were successful
Source release / source-package (push) Successful in 54s
Wire NCP 0x16/0x17 Extract a Base Handle and NCP 0x16/0x18 Restore an
Extracted Base Handle to connection-local directory-handle state.

The WebSDK documents NCP 0x2222/22/23 as taking a DirectoryHandle and
returning a 14-byte save buffer composed of a 10-byte ServerNetworkAddress
plus a 4-byte HandleID. The same documentation describes NCP 0x2222/22/24 as
taking that saved ServerNetworkAddress/HandleID pair and returning a
NewDirectoryHandle plus AccessRightsMask.

The SDK headers expose these calls as NWSaveDirectoryHandle() and
NWRestoreDirectoryHandle(), with the save buffer explicitly documented as 14
bytes. The Rust nwserver and lwared references do not implement this older
save/restore pair, and newer clients typically use the normal allocate/set
directory-handle calls instead, so keep the MARS-NWE HandleID opaque and
connection-local rather than guessing a global NetWare directory-base number.

Store extracted base-handle IDs in a small per-connection table that records
the saved volume/path tuple. Extract requires a live permanent directory
handle, and Restore validates the saved server address against this server
before allocating a new permanent directory handle for the saved path.

Add the SDK request/reply semantics to the inline endpoint comments and remove
the corresponding TODO entry.

This enables the documented endpoint path while keeping the saved HandleID
conservative and private to MARS-NWE.
2026-05-30 00:12:31 +02:00
Mario Fetka
4c28bdd3cd server: recycle stale temporary directory handles
All checks were successful
Source release / source-package (push) Successful in 47s
Novell NCOPY can allocate temporary directory handles while checking
effective directory rights before copying.  On long-running test runs the
temporary directory handle table may already contain stale entries, causing
Allocate Temporary Directory Handle to fail with -0x9d / "no directory
handles".  NCOPY then falls back to relative GetEffectiveRights requests that
fail and reports:

    NWGetEffectiveDirectoryRights returned an error.

Restore recycling of stale temporary directory handles in xinsert_new_dir().
Free slots are still preferred.  If none are available and the caller requests
a temporary handle, recycle the oldest temporary handle for the same task first,
then the oldest temporary handle globally.  Permanent directory handles are not
recycled.

This matches the expected NetWare-style behaviour for temporary handles and
allows NCOPY-style allocate-temp-handle / get-effective-rights flows to keep
working after repeated tests.
2026-05-28 21:04:26 +02:00
Mario Fetka
8ad0f4a144 connect: honor ignore-case option for LOGIN path
All checks were successful
Source release / source-package (push) Successful in 49s
Apply the ignore-case volume option when preparing the SYS:LOGIN
directory path during connection setup.

With SYS configured as `itO`, the installed tree may use lowercase
Unix directories such as `login/`, but the connection code still tried
to stat the hard-coded uppercase `LOGIN/` path. This caused new client
connections to abort with:

  Stat error LOGIN Directory, Abort !!: No such file or directory
  UnixPath=`.../SYS/LOGIN/`

Treat `VOL_OPTION_IGNCASE` like `VOL_OPTION_DOWNSHIFT` for this path so
the login directory is resolved as `login/` on ignore-case volumes.
2026-05-27 12:07:30 +02:00
Mario Fetka
52d6d76c34 Debug MAP
All checks were successful
Source release / source-package (push) Successful in 37s
2026-05-26 17:34:52 +02:00
Mario Fetka
1dc2c0a175 Quota-Backend-Cleanup/Logging
All checks were successful
Source release / source-package (push) Successful in 37s
2026-05-25 23:16:31 +02:00
Mario Fetka
3bf16d1e42 NCP22/25 modifierID
All checks were successful
Source release / source-package (push) Successful in 36s
2026-05-25 22:46:37 +02:00
Mario Fetka
830e765632 NCP22/25 Create-Date/Create-Time/Creator-ID über xattr speichern buildfix
All checks were successful
Source release / source-package (push) Successful in 36s
2026-05-25 22:22:25 +02:00
Mario Fetka
cc144f60d0 NCP22/25 Create-Date/Create-Time/Creator-ID über xattr speichern
All checks were successful
Source release / source-package (push) Successful in 35s
2026-05-25 22:13:48 +02:00
Mario Fetka
9aa2a6eee3 NCP22/25 Change-Bit-Logging
All checks were successful
Source release / source-package (push) Successful in 37s
2026-05-25 21:42:46 +02:00
Mario Fetka
b031402933 Archive-xattr-Patch
All checks were successful
Source release / source-package (push) Successful in 41s
2026-05-25 21:07:46 +02:00
Mario Fetka
f04cb8cbbc Date/Time für NCP22/25
All checks were successful
Source release / source-package (push) Successful in 36s
2026-05-25 20:26:04 +02:00
Mario Fetka
c91b24be30 Debug-Logging für NCP22/2E
All checks were successful
Source release / source-package (push) Successful in 40s
2026-05-25 19:16:37 +02:00
Mario Fetka
cb63088676 Directory Rename/Move über NCP22/2E
All checks were successful
Source release / source-package (push) Successful in 37s
2026-05-25 18:13:31 +02:00
Mario Fetka
5c44279906 NCP23/F4: Map PATH TO Dir Entry allow Files
All checks were successful
Source release / source-package (push) Successful in 38s
2026-05-25 16:07:05 +02:00
Mario Fetka
d9f7d226b9 fist implementation NCP23/F4 / F3
All checks were successful
Source release / source-package (push) Successful in 38s
2026-05-25 15:48:45 +02:00
Mario Fetka
8606579f8b debug
All checks were successful
Source release / source-package (push) Successful in 45s
2026-05-25 14:25:08 +02:00
Mario Fetka
0bc4a4b9c5 grant/revoke Request-Layout
All checks were successful
Source release / source-package (push) Successful in 46s
2026-05-25 14:11:06 +02:00
Mario Fetka
2c21eb77fd NCP22/4 Modify Maximum/Inherit Rights Mask
All checks were successful
Source release / source-package (push) Successful in 44s
2026-05-25 13:12:19 +02:00
Mario Fetka
e817405919 feat: add DOS long-name alias support 2026-05-24 00:50:32 +02:00
Mario Fetka
79c745112c Handle UID/GID and attribute warning paths in connect, ncpserv and related files 2026-04-20 23:39:42 +02:00
Mario Fetka
368b36eb95 Fix 64-bit filesystem and type handling 2026-04-20 23:39:42 +02:00
Mario Fetka
849dbf3ead apply patch from https://github.com/davidrg/mars_nwe/issues/1#issuecomment-2259477604 2024-07-31 07:59:25 +02:00
Mario Fetka
0fbc9baf41 Restructure for camke build 2011-11-13 17:37:22 +01:00