[jcifs] jcifs.smb.Dfs bugs
Michael B Allen
miallen at ioplex.com
Wed Apr 23 15:20:41 GMT 2008
On Wed, 23 Apr 2008 13:59:53 +0200
Ronny Schuetz <Usenet.r96 at gishpuppy.com> wrote:
> I guess I found two bugs in jcifs.smb.Dfs:
> "referrals" cache (CacheEntry referrals member)
> The usage of the "referrals" cache seems to be wrong, as it seems to be
> flushed at the wrong places and the cache flushes might clear too many
> From my point of view, entries in this cache should not be removed or
> at least not at the places where they are currently removed. In
> #resolve(), they are removed (if they are expired) immediately before
> they are used; in insert(), too many entries might be removed, as there
> is only one expiry time for the whole map.
> Actually I had some SmbAuthExceptions due to this issue that appeared in
> a renameTo() call immediately after this cache has been flushed. I
> changed the referrals object to a simple hashmap and removed the object
> recreation / flush code in order to resolve the issue.
> Probably #insert() might need to be called more often in order to
> refresh the referrals, but I don't know where to do that yet. Will
> investigate further.
You'll have to be more specific.
> Btw, accesses to "referrals" cache are unsynchronized, I think this
> needs to be changed as well as there is only one static Dfs instance.
True. Some maps should be synchronized. I'll create an update for this.
> #getTrustedDomains() / Domain address resolution
> The domain resolution
> UniAddress addr = UniAddress.getByName(auth.domain);
> in this method was very slow for me. I turned out that it was unable to
> resolve my domain, so I changed this line to
> UniAddress addr = UniAddress.getByName(auth.domain, true);
> which resolves the issue, as the domain can be resolved properly now.
Lookups are timing out. You probably need different name resolution
Michael B Allen
PHP Active Directory SPNEGO SSO
More information about the jcifs