[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