Simplify code in that it only fetches a single entry per
IEnumShellItems::Next call. For some reason this appears to
be quicker most of the time.
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
Root dirs of WSL installations are exposed via \\wsl$.
Add support to expose \\wsl$.
While at it, check if TERMSRV and P9 provider exist before
exposing them.
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
The //tsclient provider is WNNC_NET_TERMSRV.
Fixes: 7db1c6fc4e ("Cygwin: //server: revert to using WNet and support NFS shares")
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
Continue using WSD for enumerating //, but switch back to
WNet for enumerating shares.
Add trying to enumerate NFS shares for machine names given as FQDN.
Only downcase server names, keep case of shares intact.
Move downcasing into dir_cache class.
Add a comment to explain an extrem weirdness in Windows.
Fixes: 205190a80b ("Cygwin: // and //server: switch to Network Discovery")
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
Checking server existence by trying to enumerate its shares
may result in 2 minutes delay until some internal timeout is hit.
In the light that every network is an IP network anyway these
days, let's try with a simple getaddrinfo() call. This is usually
back in 3 secs even if the server doesn't exist, and it's usually
back in 8 secs if the DNS server can't be connected. This is the
fastest method I found to check server existence yet.
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
SMBv1 is ultimately deprecated since Novemer 2023. It's also
not installed by default on latest Windows versions.
Drop using the WNet (SMBv1) API in favor of using Network Discovery.
Given there's no documented Win32 API for that, the code now uses
the Shell API.
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>