[jcifs] ConcurrentModification exception from SmbTransport
using examples/SmbCrawler
Michael B Allen
mba2000 at ioplex.com
Tue Sep 30 13:08:25 EST 2003
Just a few observations;
First, SmbCrawler is single threaded so it's not clear to me where the
"ConcurrentModification" is coming from. It could be the transport thread
is calling tryClose which begins to iterate over the sessions calling
logoff() on each which instructs the sessions to issue a new request back
into the transport but it's still not clear why that would mess with any
sessions. It think Eric's patch might be right for the concurrency issue
but if it is we might as well just make tryClose() syncronized. We
couldn't do that before the last concurrency problem but now that everyone
locks on the transport object I think we can make it syncronized now. I
have to think about that some more.
Second, Gary is not using any credentials so the initial IPC$ connect
fails. The second using NtlmPasswordAuthentication.NULL credentials which
succeeds.
It could be that the "", "", "" credentials have special signing semantics
but it might also be that the Unable to verify signature problem is an
artifact of yet another error because I get the same message when trying
to connect with GUEST credentials which on my network has been disabled:
$ java -Djcifs.properties=../miallen.prp SmbCrawler smb://miallen2/pub/ 2
Exception in thread "main" jcifs.smb.SmbAuthException: The user account
has expired
at jcifs.smb.SmbTransport.send(SmbTransport.java:655)
at jcifs.smb.SmbSession.sessionSetup(SmbSession.java:135)
at jcifs.smb.SmbSession.send(SmbSession.java:102)
at jcifs.smb.SmbTree.treeConnect(SmbTree.java:124)
at jcifs.smb.SmbFile.connect(SmbFile.java:579)
at jcifs.smb.SmbFile.connect0(SmbFile.java:549)
at jcifs.smb.SmbFile.sendTransaction(SmbFile.java:525)
at jcifs.smb.SmbFile.listFiles(SmbFile.java:1446)
at jcifs.smb.SmbFile.listFiles(SmbFile.java:1422)
at jcifs.smb.SmbFile.listFiles(SmbFile.java:1303)
at SmbCrawler.traverse(SmbCrawler.java:21)
at SmbCrawler.main(SmbCrawler.java:41)
Sep 29 22:42:22.172 - exception reading from socket input:
MIALLEN2<20>/172.23.22.31
java.io.IOException: Unverifiable signature.
at jcifs.smb.SmbTransport.verify(SmbTransport.java:542)
at jcifs.smb.SmbTransport.run(SmbTransport.java:421)
at java.lang.Thread.run(Thread.java:479)
Otherwise I'm still looking...
Mike
--
A program should be written to model the concepts of the task it
performs rather than the physical world or a process because this
maximizes the potential for it to be applied to tasks that are
conceptually similar and, more important, to tasks that have not
yet been conceived.
More information about the jcifs
mailing list