StickSMB: Arduino ESP32-S3 port of libsmb2 7.0.0
Upstream: https://github.com/sahlberg/libsmb2
Commit: 727feaaa6d0f4fed1bae57745fbc2c5db9a30e64
License: LGPL-2.1-or-later. See COPYING and LICENCE-LGPL-2.1.txt.
The complete library source used for this build is in src/.
Use the included firmware sources and Build.ps1 to rebuild/relink with a
modified version of this library. No signature or lock prevents modified
firmware from running on the device.

Port modifications:
- Arduino library layout, ESP config and HAVE_CONFIG_H, _U_ definition.
- SDK compatibility wrappers for readv/writev and getlogin_r.
- Fixed server hostname fallback for ESP SDK without gethostname.
- stick-api.c exposes current tree ID without C++ private-struct coupling.
- QUERY_INFO passthrough permits raw encodings for supported info classes.
- Require signing for authenticated sessions when server signing enabled.
- Pass opaque FSCTL input to server handlers; preserve wire InputCount.

StickBridge's filesystem and minimal srvsvc RPC adapter are separate
MIT-licensed application code in firmware/StickBridge/SmbBridge.cpp.
Arduino ESP32 core 3.3.8 and Adafruit libraries are installed separately
using Arduino CLI; exact versions are documented in Anleitung.txt.


StickBridge 1.4.0 transport changes:
- ESP context ownership before fallible allocations; app destruction callbacks
  only for notified clients, including service shutdown.
- Cap eight connected peers; 15-second monotonic authentication deadline.
- Cull all closed peers on every select iteration, including idle timeouts.
- Query-directory callback caches its independently allocated request name
  before a self-queued handler can correlate and free the request PDU.
  This fixes a reproduced use-after-free while listing a single root folder.
- POSIX backend, TCP keepalive and server recovery are in firmware/SmbBridge.cpp.

StickBridge 1.5.0: ESP32 hardware AES-CMAC via batched MbedTLS AES-CBC;
RFC 4493 vectors, reference fallback and bounded signing benchmark/counters.
SMB authentication and signing remain enabled. Original LGPL headers retained.

StickBridge 1.5.1–1.5.5, 28.10.2026: request/compound-scoped related FileId;
async CHANGE_NOTIFY with pending/cancel/cleanup, credits and output bounds;
PSRAM allocation for pending requests; CLOSE postquery follows request flags.
Application integration: shared staged writers use a single FatFS transaction,
lazy staging for existing files, independent handle positions, rollback on
writer disconnect, metadata notifications and refreshed reader metadata.
Modified LGPL library sources are included in full. Original headers retained.
