[jcifs] 401 and hanging threads after TransportException
Ronald Müller
ronald.mueller at infopark.de
Mon Nov 5 07:26:56 GMT 2007
Hello,
I have a problem with jcifs 1.2.17 and up till now I couldn't find a
solution in your list. I also tried to use jcifs 1.1.9 and jcifs 1.2.11
but this didn't make any difference.
Sometimes my client/application gets a
jcifs.smb.SmbException/jcifs.util.transport.TransportException
jcifs.smb.SmbException:
jcifs.util.transport.TransportException: Transport29 timedout waiting
for response to
SmbComSessionSetupAndX[command=SMB_COM_SESSION_SETUP_ANDX,received=false,errorCode=0,flags=0x0018,flags2=0xC003,signSeq=0,tid=0,pid=50963,uid=0,mid=55,wordCount=13,byteCount=89,andxCommand=0x75,andxOffset=150,snd_buf_size=16644,maxMpxCount=10,VC_NUMBER=1,sessionKey=0,passwordLength=24,unicodePasswordLength=24,capabilities=4180,accountName=g52479,primaryDomain=,NATIVE_OS=Linux,NATIVE_LANMAN=jCIFS]
at jcifs.util.transport.Transport.sendrecv(Transport.java:76)
at jcifs.smb.SmbTransport.send(SmbTransport.java:606)
at jcifs.smb.SmbSession.sessionSetup(SmbSession.java:277)
at jcifs.smb.SmbSession.send(SmbSession.java:233)
at jcifs.smb.SmbTree.treeConnect(SmbTree.java:154)
at jcifs.smb.SmbSession.logon(SmbSession.java:169)
at jcifs.smb.SmbSession.logon(SmbSession.java:162)
at jcifs.http.NtlmHttpFilter.negotiate(NtlmHttpFilter.java:182)
at jcifs.http.NtlmHttpFilter.doFilter(NtlmHttpFilter.java:114)
...
...
...
First of all I've no idea why the client sometimes gets this exception.
In my logfile I can see that shortly before and shortly after this
exception my program can authenticate users at the domain controller
without any problems. And after getting this error it works for hours
without any problems. So why at just that moment it gets this exception?
Neither the domain controller nor the server my application is running
on have a high load at this time. Do you have an advice what to check?
The second problem around this exception is the following behaviour: If
one thread runs into this exception also all other threads - trying to
get an authentication at the domain controller - hang until the first
thread reaches the timeout (10 seconds). Ok, as far I learned within the
last days reading your list this behaviour could be caused because jcifs
is synchronizing all authentication requests so that if one hangs also
all other requests hang (waiting for the timeout of the first request).
Is my assumption correct?
But more irritating: All of these hanging/waiting threads get an 401 the
users are seeing in their browsers and they are asked (via basic auth
promt) to enter login/password. Why even the other threads (not getting
the exception) get an 401? Can it be that all these threads/requests use
the same socket and after the first request gets the exception also the
socket dies? Is there a way to force this threads to use another socket
so they don't get an 401?
Thanks for your help
Ronald
More information about the jcifs
mailing list