+Sun Oct 19 23:25:45 EDT 2008
+jcifs-1.2.25
+
+The DcerpcHandle code to increase the stub size if alloc_hint was greater
+than stub.length was not being engaged properly which would result in
+an ArrayIndexOutOfBoundsException if the DCERPC response was larger than
+0xffff. This has been fixed.
+
+Disabled decoding of NativeFileSystem field b/c it seems the iSeries
+implementation sends this field in ASCII even though Unicode is
+indicated. Fortunately the field is of no interest to anyone so we can
+simply omit decoding it.
+
+Added check in copyTo to prevent a possible thread lockup when server
+is disconnected during a copy.
+
+Force SMB_COM_TREE_CONNECT_ANDX service to always be what was passed to
+the constructor (default is '?????'). IBM iSeries apparently does not
+like explicitly specifying 'A:' which can occur on reconnect after
+an soTimeout.
+
Wed Jul 23 13:35:20 EDT 2008
jcifs-1.2.24
<project name="jcifs" default="usage" basedir=".">
- <property name="version" value="1.2.24"/>
- <property name="reldate" value="Jul 23, 2008"/>
+ <property name="version" value="1.2.25"/>
+ <property name="reldate" value="Oct 20, 2008"/>
<target name="usage">
<echo>
off += stub_frag_len;
}
- buf.reset();
+ buf = new NdrBuffer(stub, 0);
msg.decode(buf);
} finally {
jcifs.smb.BufferCache.releaseBuffer(stub);
responseTable.remove( nid );
}
- if (NbtAddress.isWINS( request.addr ) == false)
- break;
-
- /* Message was sent to WINS but
- * failed to receive response.
- * Try a different WINS server.
- */
- if (request.addr == NbtAddress.getWINSAddress())
- NbtAddress.switchWINS();
- request.addr = NbtAddress.getWINSAddress();
+ synchronized (LOCK) {
+ if (NbtAddress.isWINS( request.addr ) == false)
+ break;
+ /* Message was sent to WINS but
+ * failed to receive response.
+ * Try a different WINS server.
+ */
+ if (request.addr == NbtAddress.getWINSAddress())
+ NbtAddress.switchWINS();
+ request.addr = NbtAddress.getWINSAddress();
+ }
}
}
}
break;
default:
opCodeString = Integer.toString( opCode );
+ break;
}
switch( resultCode ) {
case FMT_ERR:
break;
default:
resultCodeString = "0x" + Hexdump.toHexString( resultCode, 1 );
+ break;
}
switch( questionType ) {
case NB:
questionTypeString = "NB";
+ break;
case NBSTAT:
questionTypeString = "NBSTAT";
+ break;
default:
questionTypeString = "0x" + Hexdump.toHexString( questionType, 4 );
+ break;
}
switch( recordType ) {
case A:
break;
case NB:
recordTypeString = "NB";
+ break;
case NBSTAT:
recordTypeString = "NBSTAT";
+ break;
default:
recordTypeString = "0x" + Hexdump.toHexString( recordType, 4 );
+ break;
}
return new String(
}
bufferIndex += len + 1;
// win98 observed not returning nativeFileSystem
+/* Problems here with iSeries returning ASCII even though useUnicode = true
+ * Fortunately we don't really need nativeFileSystem for anything.
if( byteCount > bufferIndex - start ) {
nativeFileSystem = readString( buffer, bufferIndex );
bufferIndex += stringWireLength( nativeFileSystem, bufferIndex );
}
+*/
return bufferIndex - start;
}
send( req, resp );
synchronized( w ) {
+ if( w.e != null ) {
+ throw w.e;
+ }
while( !w.ready ) {
try {
w.wait();
String share;
String service = "?????";
+ String service0;
SmbSession session;
boolean treeConnected, inDfs, inDomainDfs;
int tree_num;
if( service != null && service.startsWith( "??" ) == false ) {
this.service = service;
}
+ this.service0 = this.service;
}
boolean matches( String share, String service ) {
unc = "\\\\" + session.transport.tconHostName + '\\' + share;
+ /* IBM iSeries doesn't like specifying a service. Always reset
+ * the service to whatever was determined in the constructor.
+ */
+ service = service0;
+
/*
* Tree Connect And X Request / Response
*/