[jcifs] Re: 1.2.4 NameQueryRequest fails in OC4J on AIX (0.8.3
works)
Oliver Schoett
os at sdm.de
Fri Sep 23 17:56:16 GMT 2005
Michael B Allen wrote:
>Another difference is that the resultCode=3 which means FMT_ERR (format
>error).
>
>Unfortunately the 1.2.x debugging info doesn't show the "datagram packet
>sent to" message so I can't see that the packet isn't being sent to WINS
>as opposed to broadcasting. If it's sent to WINS then isBroadcast *should*
>be false.
>
>
I do not have tcpdump on the OC4J server yet, but from my PC I can see
that 0.8.3 did broadcast, whereas 1.2.4 did not (so presumably it sent
the packet directly to the WINS server).
The config is genuine (except for the changed IP addresses). As you
suggested, I took out the broadcast address and got the same error as
before. By the way, the browser error message is
java.net.UnknownHostException: KVMADS
at jcifs.netbios.NameServiceClient.getAllByName(NameServiceClient.java:292)
at jcifs.netbios.NbtAddress.getAllByName(NbtAddress.java:454)
at jcifs.smb.SmbSession.getChallengeForDomain(SmbSession.java:95)
at jcifs.http.NtlmHttpFilter.negotiate(NtlmHttpFilter.java:150)
at jcifs.http.NtlmHttpFilter.doFilter(NtlmHttpFilter.java:114)
at com.evermind[Oracle Application Server Containers for J2EE 10g (9.0.4.0.0)].server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:604)
at com.evermind[Oracle Application Server Containers for J2EE 10g (9.0.4.0.0)].server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:317)
at com.evermind[Oracle Application Server Containers for J2EE 10g (9.0.4.0.0)].server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:790)
at com.evermind[Oracle Application Server Containers for J2EE 10g (9.0.4.0.0)].server.http.AJPRequestHandler.run(AJPRequestHandler.java:208)
at com.evermind[Oracle Application Server Containers for J2EE 10g (9.0.4.0.0)].server.http.AJPRequestHandler.run(AJPRequestHandler.java:125)
at com.evermind[Oracle Application Server Containers for J2EE 10g (9.0.4.0.0)].util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:192)
at java.lang.Thread.run(Thread.java:568)
Conversely, I took out the jcifs.netbios.wins address, forcing 1.2.4 to
broadcast, which worked but resulted in another error:
Browser message:
java.net.UnknownHostException: Failed to negotiate with a suitable domain controller for KVMADS
at jcifs.smb.SmbSession.getChallengeForDomain(SmbSession.java:126)
at jcifs.http.NtlmHttpFilter.negotiate(NtlmHttpFilter.java:150)
at jcifs.http.NtlmHttpFilter.doFilter(NtlmHttpFilter.java:114)
at com.evermind[Oracle Application Server Containers for J2EE 10g (9.0.4.0.0)].server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:604)
at com.evermind[Oracle Application Server Containers for J2EE 10g (9.0.4.0.0)].server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:317)
at com.evermind[Oracle Application Server Containers for J2EE 10g (9.0.4.0.0)].server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:790)
at com.evermind[Oracle Application Server Containers for J2EE 10g (9.0.4.0.0)].server.http.AJPRequestHandler.run(AJPRequestHandler.java:208)
at com.evermind[Oracle Application Server Containers for J2EE 10g (9.0.4.0.0)].server.http.AJPRequestHandler.run(AJPRequestHandler.java:125)
at com.evermind[Oracle Application Server Containers for J2EE 10g (9.0.4.0.0)].util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:192)
at java.lang.Thread.run(Thread.java:568)
Server logfile:
NameQueryRequest[nameTrnId=1,isResponse=false,opCode=QUERY,isAuthAnswer=false,isTruncated=false,isRecurAvailable=false,isRecurDesired=true,isBroadcast=true,resultCode=0,questionCount=1,answerCount=0,authorityCount=0,additionalCount=0,questionName=KVMADS<1C>,questionType=0x0020,questionClass=IN,recordName=null,recordType=0x0000,recordClass=0x0000,ttl=0,rDataLength=0]
NetBIOS: new data read from socket
00000: 00 01 01 10 00 01 00 00 00 00 00 00 20 45 43 46 |............ ECF|
00010: 47 45 4C 45 42 45 45 46 44 43 41 43 41 43 41 43 |GELEBEEFDCACACAC|
00020: 41 43 41 43 41 43 41 43 41 43 41 42 4D 00 00 20 |ACACACACACABM.. |
00030: 00 01 |.. |
NameQueryResponse[nameTrnId=1,isResponse=true,opCode=QUERY,isAuthAnswer=true,isTruncated=false,isRecurAvailable=false,isRecurDesired=true,isBroadcast=false,resultCode=0,questionCount=0,answerCount=1,authorityCount=0,additionalCount=0,questionName=null,questionType=0x0000,questionClass=IN,recordName=KVMADS<1C>,recordType=0x0020,recordClass=IN,ttl=300000,rDataLength=6,addrEntry=[Ljcifs.netbios.NbtAddress;@2fe13132]
00000: 00 01 85 00 00 00 00 01 00 00 00 00 20 45 43 46 |............ ECF|
00010: 47 45 4C 45 42 45 45 46 44 43 41 43 41 43 41 43 |GELEBEEFDCACACAC|
00020: 41 43 41 43 41 43 41 43 41 43 41 42 4D 00 00 20 |ACACACACACABM.. |
00030: 00 01 00 04 93 E0 00 06 80 00 C1 66 B6 02 |.....à....Áf¶. |
Failed validate DC: KVMADS<1C>/183.112.182.2
jcifs.smb.SmbException:
jcifs.util.transport.TransportException
java.net.NoRouteToHostException: The socket name is not available on this system.
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:329)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:194)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:181)
at java.net.Socket.connect(Socket.java:459)
at java.net.Socket.connect(Socket.java:409)
at java.net.Socket.<init>(Socket.java:315)
at java.net.Socket.<init>(Socket.java:143)
at jcifs.smb.SmbTransport.negotiate(SmbTransport.java:233)
at jcifs.smb.SmbTransport.doConnect(SmbTransport.java:274)
at jcifs.util.transport.Transport.run(Transport.java:213)
at java.lang.Thread.run(Thread.java:568)
at jcifs.util.transport.Transport.run(Transport.java:229)
at java.lang.Thread.run(Thread.java:568)
at jcifs.smb.SmbTransport.connect(SmbTransport.java:264)
at jcifs.smb.SmbSession.interrogate(SmbSession.java:74)
at jcifs.smb.SmbSession.getChallengeForDomain(SmbSession.java:111)
at jcifs.http.NtlmHttpFilter.negotiate(NtlmHttpFilter.java:150)
at jcifs.http.NtlmHttpFilter.doFilter(NtlmHttpFilter.java:114)
at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:604)
at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:317)
at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:790)
at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:208)
at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:125)
at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:192)
at java.lang.Thread.run(Thread.java:568)
java.net.SocketTimeoutException: Receive timed out
at java.net.PlainDatagramSocketImpl.receive(Native Method)
at java.net.PlainDatagramSocketImpl.receive(PlainDatagramSocketImpl.java:129)
at java.net.DatagramSocket.receive(DatagramSocket.java:701)
at jcifs.netbios.NameServiceClient.run(NameServiceClient.java:184)
at java.lang.Thread.run(Thread.java:568)
The domain server IP address ...182.2 is correct and I can ping and
traceroute from the AIX server to it; the domain server is a Windows
2003 Active Directory with SMB signing turned off. This error also
leaves me stumped.
Recall that 0.8.3 works fine on this machine; the only problem we have
with it is that at the client site the domain server lists from WINS
contain bad entries which the admins cannot get rid of, and 0.8.3 fails
in this case. You mentioned that this bug has long been fixed; but both
1.1.2 and now 1.2.4 did not work at all for us.
Regards,
Oliver Schoett
More information about the jcifs
mailing list