[jcifs] Bug in jcifs.netbios.NameServiceClient
Steve Herndon
sherndon at stillsecure.com
Thu Jan 6 22:37:37 GMT 2005
Here is the diff:
$ diff -c jcifs_1.1.6/src/jcifs/netbios/NameServiceClient.java
jcifs_1.1.6_patched/src/jcifs/netbios/NameServiceClient.java
*** jcifs_1.1.6/src/jcifs/netbios/NameServiceClient.java
2004-12-27 18:44:16.000000000 -0700
--- jcifs_1.1.6_patched/src/jcifs/netbios/NameServiceClient.java
2005-01-06 10:56:51.328403064 -0700
***************
*** 174,211 ****
}
public void run() {
int nameTrnId;
! NameServicePacket response;
! while( thread == Thread.currentThread() ) {
! in.setLength( RCV_BUF_SIZE );
! try {
socket.setSoTimeout( closeTimeout );
socket.receive( in );
! } catch( IOException ioe ) {
! tryClose();
! break;
! }
!
! if( log.level > 3 )
! log.println( "NetBIOS: new data read from socket" );
!
! nameTrnId = NameServicePacket.readNameTrnId( rcv_buf, 0 );
! response = (NameServicePacket)responseTable.get( new
Integer( nameTrnId ));
! if( response == null || response.received ) {
! continue;
! }
! synchronized( response ) {
! response.readWireFormat( rcv_buf, 0 );
! response.received = true;
!
! if( log.level > 3 ) {
! log.println( response );
! Hexdump.hexdump( log, rcv_buf, 0, in.getLength() );
}
-
- response.notify();
}
}
}
void send( NameServicePacket request, NameServicePacket response,
int timeout ) throws
IOException {
--- 174,219 ----
}
public void run() {
int nameTrnId;
! NameServicePacket response = null;
! try {
! while( thread == Thread.currentThread() ) {
! in.setLength( RCV_BUF_SIZE );
socket.setSoTimeout( closeTimeout );
socket.receive( in );
!
! if( log.level > 3 )
! log.println( "NetBIOS: new data read from socket" );
!
! nameTrnId = NameServicePacket.readNameTrnId( rcv_buf, 0 );
! response = (NameServicePacket)responseTable.get( new
Integer( nameTrnId ));
! if( response == null || response.received ) {
! continue;
! }
! synchronized( response ) {
! try {
! response.readWireFormat( rcv_buf, 0 );
! }
! catch (NegativeArraySizeException ex) {
! // Malformed packet. Ignore it
! continue;
! }
! response.received = true;
!
! if( log.level > 2 ) {
! log.println( response );
! Hexdump.hexdump( log, rcv_buf, 0,
in.getLength() );
! }
!
! response.notify();
}
}
}
+ catch (Throwable t) {
+ }
+ finally {
+ tryClose();
+ }
}
void send( NameServicePacket request, NameServicePacket response,
int timeout ) throws
IOException {
steve
Michael B Allen wrote:
>Steve Herndon said:
>
>
>>I have found and fixed a bug in the jcifs.netbios.NameServiceClient
>>class where the thread was dying but not getting restarted. I found this
>>problem while using jcifs on a network with a large number of clients
>>(>2000). How do I submit my patch for inclusion into the jcifs repository?
>>
>>
>
>Just post it.
>
>Mike
>
>
--
Steve Herndon
More information about the jcifs
mailing list