jcifs-1.3.14 from tgz
authorFelix <felix@h1611079.stratoserver.net>
Sun, 3 Jul 2011 10:37:39 +0000 (12:37 +0200)
committerFelix <felix@h1611079.stratoserver.net>
Sun, 3 Jul 2011 10:48:06 +0000 (12:48 +0200)
Thu Feb 11 15:10:26 EST 2010
jcifs-1.3.14

A lock has been added to DcerpcHandle to ensure that the NT_CREATE_ANDX
and DCERPC bind are performed together as some pipes will return 'All
pipe instances are busy' errors if the client tries to open the same
pipe concurrently.

JCIFS will no longer do a NetBIOS Node Status to determine the server
hostname as it seems some servers no longer respond to it which causes
a long delay on connect.

92 files changed:
README.txt
build.xml
examples/AclCrawler.class [deleted file]
examples/AllocInfo.class [deleted file]
examples/Append.class [deleted file]
examples/AuthListFiles.class [deleted file]
examples/CallNamedPipe.class [deleted file]
examples/CopyTo.class [deleted file]
examples/CountPerms.class [deleted file]
examples/CreateFile.class [deleted file]
examples/Delete.class [deleted file]
examples/Equals.class [deleted file]
examples/Exists.class [deleted file]
examples/FileInfo.class [deleted file]
examples/FileOps.class [deleted file]
examples/FilterFiles$BigFileFilter.class [deleted file]
examples/FilterFiles$ShortFilenameFilter.class [deleted file]
examples/FilterFiles.class [deleted file]
examples/Format.class [deleted file]
examples/Get.class [deleted file]
examples/GetDate.class [deleted file]
examples/GetDfsPath.class [deleted file]
examples/GetGroupMemberSidsFromURL.class [deleted file]
examples/GetSecurity.class [deleted file]
examples/GetShareSecurity.class [deleted file]
examples/GetType.class [deleted file]
examples/GetURL.class [deleted file]
examples/GrowWrite.class [deleted file]
examples/HttpURL.class [deleted file]
examples/Interleave$IThread.class [deleted file]
examples/Interleave.class [deleted file]
examples/InterruptTest.class [deleted file]
examples/IsDir.class [deleted file]
examples/LargeListFiles.class [deleted file]
examples/Length.class [deleted file]
examples/List.class [deleted file]
examples/ListACL.class [deleted file]
examples/ListFiles.class [deleted file]
examples/ListTypes.class [deleted file]
examples/Mkdir.class [deleted file]
examples/NodeStatus.class [deleted file]
examples/OpenExclusive.class [deleted file]
examples/PeekNamedPipe$ReceiverThread.class [deleted file]
examples/PeekNamedPipe.class [deleted file]
examples/PipeTalk$ReceiverThread.class [deleted file]
examples/PipeTalk.class [deleted file]
examples/Put.class [deleted file]
examples/Query.class [deleted file]
examples/RenameTo.class [deleted file]
examples/SetAttrs.class [deleted file]
examples/SetTime.class [deleted file]
examples/SidCacheTest.class [deleted file]
examples/SidCrawler.class [deleted file]
examples/SlowRead.class [deleted file]
examples/SlowWrite.class [deleted file]
examples/SmbCrawler.class [deleted file]
examples/SmbShell.class [deleted file]
examples/SmbTableFile.class [deleted file]
examples/SmbTableFileRecord.class [deleted file]
examples/T2Crawler$CrawlerThread.class [deleted file]
examples/T2Crawler$Semaphore.class [deleted file]
examples/T2Crawler.class [deleted file]
examples/TestRandomAccess$TestRecord.class [deleted file]
examples/TestRandomAccess.class [deleted file]
examples/TestSmbURL.class [deleted file]
examples/TestUnicode.class [deleted file]
examples/ThreadedNbtQuery$QThread.class [deleted file]
examples/ThreadedNbtQuery.class [deleted file]
examples/ThreadedSmbCrawler$DirEntry.class [deleted file]
examples/ThreadedSmbCrawler$SmbCrawlerThread.class [deleted file]
examples/ThreadedSmbCrawler.class [deleted file]
examples/ThreadedUniQuery$QThread.class [deleted file]
examples/ThreadedUniQuery.class [deleted file]
examples/Torture1.class [deleted file]
examples/Torture2.class [deleted file]
examples/TortureTest5.class [deleted file]
examples/TransactNamedPipe.class [deleted file]
examples/URLTest.class [deleted file]
examples/VerifyGuest.class [deleted file]
examples/VerifyIO.class [deleted file]
examples/VerifyReads.class [deleted file]
examples/Worker.class [deleted file]
examples/runtests.sh
src/jcifs/dcerpc/DcerpcBinding.java
src/jcifs/dcerpc/DcerpcHandle.java
src/jcifs/dcerpc/DcerpcPipeHandle.java
src/jcifs/netbios/NbtAddress.java
src/jcifs/smb/NtlmContext.java
src/jcifs/smb/SmbComTreeConnectAndX.java
src/jcifs/smb/SmbFile.java
src/jcifs/smb/SmbSession.java
src/jcifs/smb/SmbTree.java

index 92e79d4..e78852c 100644 (file)
@@ -1,3 +1,16 @@
+Thu Feb 11 15:10:26 EST 2010
+jcifs-1.3.14
+
+A lock has been added to DcerpcHandle to ensure that the NT_CREATE_ANDX
+and DCERPC bind are performed together as some pipes will return 'All
+pipe instances are busy' errors if the client tries to open the same
+pipe concurrently.
+
+JCIFS will no longer do a NetBIOS Node Status to determine the server
+hostname as it seems some servers no longer respond to it which causes
+a long delay on connect.
+
+Tue Jan  5 13:19:39 EDT 2010
 jcifs-1.3.13
 
 Locking throughout the transport layer has been rewritten. This should
index ac701a2..89ad2f0 100644 (file)
--- a/build.xml
+++ b/build.xml
@@ -1,7 +1,7 @@
 <project name="jcifs" default="usage" basedir=".">
 
-    <property name="version" value="1.3.13"/>
-    <property name="reldate" value="Jan 5, 2010"/>
+    <property name="version" value="1.3.14"/>
+    <property name="reldate" value="Feb 10, 2010"/>
 
     <target name="usage">
         <echo>
diff --git a/examples/AclCrawler.class b/examples/AclCrawler.class
deleted file mode 100644 (file)
index c12c07a..0000000
Binary files a/examples/AclCrawler.class and /dev/null differ
diff --git a/examples/AllocInfo.class b/examples/AllocInfo.class
deleted file mode 100644 (file)
index d052675..0000000
Binary files a/examples/AllocInfo.class and /dev/null differ
diff --git a/examples/Append.class b/examples/Append.class
deleted file mode 100644 (file)
index eadb65a..0000000
Binary files a/examples/Append.class and /dev/null differ
diff --git a/examples/AuthListFiles.class b/examples/AuthListFiles.class
deleted file mode 100644 (file)
index 0f9f3bf..0000000
Binary files a/examples/AuthListFiles.class and /dev/null differ
diff --git a/examples/CallNamedPipe.class b/examples/CallNamedPipe.class
deleted file mode 100644 (file)
index 1378730..0000000
Binary files a/examples/CallNamedPipe.class and /dev/null differ
diff --git a/examples/CopyTo.class b/examples/CopyTo.class
deleted file mode 100644 (file)
index 1eec536..0000000
Binary files a/examples/CopyTo.class and /dev/null differ
diff --git a/examples/CountPerms.class b/examples/CountPerms.class
deleted file mode 100644 (file)
index 6632e6e..0000000
Binary files a/examples/CountPerms.class and /dev/null differ
diff --git a/examples/CreateFile.class b/examples/CreateFile.class
deleted file mode 100644 (file)
index 9ae7ab1..0000000
Binary files a/examples/CreateFile.class and /dev/null differ
diff --git a/examples/Delete.class b/examples/Delete.class
deleted file mode 100644 (file)
index b52be49..0000000
Binary files a/examples/Delete.class and /dev/null differ
diff --git a/examples/Equals.class b/examples/Equals.class
deleted file mode 100644 (file)
index d1ea38a..0000000
Binary files a/examples/Equals.class and /dev/null differ
diff --git a/examples/Exists.class b/examples/Exists.class
deleted file mode 100644 (file)
index 9f03ca4..0000000
Binary files a/examples/Exists.class and /dev/null differ
diff --git a/examples/FileInfo.class b/examples/FileInfo.class
deleted file mode 100644 (file)
index fbdcf11..0000000
Binary files a/examples/FileInfo.class and /dev/null differ
diff --git a/examples/FileOps.class b/examples/FileOps.class
deleted file mode 100644 (file)
index 9a0e176..0000000
Binary files a/examples/FileOps.class and /dev/null differ
diff --git a/examples/FilterFiles$BigFileFilter.class b/examples/FilterFiles$BigFileFilter.class
deleted file mode 100644 (file)
index 1cd1710..0000000
Binary files a/examples/FilterFiles$BigFileFilter.class and /dev/null differ
diff --git a/examples/FilterFiles$ShortFilenameFilter.class b/examples/FilterFiles$ShortFilenameFilter.class
deleted file mode 100644 (file)
index 0b43d22..0000000
Binary files a/examples/FilterFiles$ShortFilenameFilter.class and /dev/null differ
diff --git a/examples/FilterFiles.class b/examples/FilterFiles.class
deleted file mode 100644 (file)
index e8f82a5..0000000
Binary files a/examples/FilterFiles.class and /dev/null differ
diff --git a/examples/Format.class b/examples/Format.class
deleted file mode 100644 (file)
index 998801f..0000000
Binary files a/examples/Format.class and /dev/null differ
diff --git a/examples/Get.class b/examples/Get.class
deleted file mode 100644 (file)
index 8192c4a..0000000
Binary files a/examples/Get.class and /dev/null differ
diff --git a/examples/GetDate.class b/examples/GetDate.class
deleted file mode 100644 (file)
index 8a82eaa..0000000
Binary files a/examples/GetDate.class and /dev/null differ
diff --git a/examples/GetDfsPath.class b/examples/GetDfsPath.class
deleted file mode 100644 (file)
index 751b59a..0000000
Binary files a/examples/GetDfsPath.class and /dev/null differ
diff --git a/examples/GetGroupMemberSidsFromURL.class b/examples/GetGroupMemberSidsFromURL.class
deleted file mode 100644 (file)
index 5334b1f..0000000
Binary files a/examples/GetGroupMemberSidsFromURL.class and /dev/null differ
diff --git a/examples/GetSecurity.class b/examples/GetSecurity.class
deleted file mode 100644 (file)
index 0f1b2d2..0000000
Binary files a/examples/GetSecurity.class and /dev/null differ
diff --git a/examples/GetShareSecurity.class b/examples/GetShareSecurity.class
deleted file mode 100644 (file)
index 6d0f992..0000000
Binary files a/examples/GetShareSecurity.class and /dev/null differ
diff --git a/examples/GetType.class b/examples/GetType.class
deleted file mode 100644 (file)
index 1028177..0000000
Binary files a/examples/GetType.class and /dev/null differ
diff --git a/examples/GetURL.class b/examples/GetURL.class
deleted file mode 100644 (file)
index e473c42..0000000
Binary files a/examples/GetURL.class and /dev/null differ
diff --git a/examples/GrowWrite.class b/examples/GrowWrite.class
deleted file mode 100644 (file)
index 2d0ecbb..0000000
Binary files a/examples/GrowWrite.class and /dev/null differ
diff --git a/examples/HttpURL.class b/examples/HttpURL.class
deleted file mode 100644 (file)
index 55faf3c..0000000
Binary files a/examples/HttpURL.class and /dev/null differ
diff --git a/examples/Interleave$IThread.class b/examples/Interleave$IThread.class
deleted file mode 100644 (file)
index 12d7d51..0000000
Binary files a/examples/Interleave$IThread.class and /dev/null differ
diff --git a/examples/Interleave.class b/examples/Interleave.class
deleted file mode 100644 (file)
index 4ea28d5..0000000
Binary files a/examples/Interleave.class and /dev/null differ
diff --git a/examples/InterruptTest.class b/examples/InterruptTest.class
deleted file mode 100644 (file)
index 65da543..0000000
Binary files a/examples/InterruptTest.class and /dev/null differ
diff --git a/examples/IsDir.class b/examples/IsDir.class
deleted file mode 100644 (file)
index 712a60e..0000000
Binary files a/examples/IsDir.class and /dev/null differ
diff --git a/examples/LargeListFiles.class b/examples/LargeListFiles.class
deleted file mode 100644 (file)
index 83f6e76..0000000
Binary files a/examples/LargeListFiles.class and /dev/null differ
diff --git a/examples/Length.class b/examples/Length.class
deleted file mode 100644 (file)
index b096ceb..0000000
Binary files a/examples/Length.class and /dev/null differ
diff --git a/examples/List.class b/examples/List.class
deleted file mode 100644 (file)
index 2d2e7b0..0000000
Binary files a/examples/List.class and /dev/null differ
diff --git a/examples/ListACL.class b/examples/ListACL.class
deleted file mode 100644 (file)
index 6c591f9..0000000
Binary files a/examples/ListACL.class and /dev/null differ
diff --git a/examples/ListFiles.class b/examples/ListFiles.class
deleted file mode 100644 (file)
index 996f03a..0000000
Binary files a/examples/ListFiles.class and /dev/null differ
diff --git a/examples/ListTypes.class b/examples/ListTypes.class
deleted file mode 100644 (file)
index 6da499c..0000000
Binary files a/examples/ListTypes.class and /dev/null differ
diff --git a/examples/Mkdir.class b/examples/Mkdir.class
deleted file mode 100644 (file)
index 4c96536..0000000
Binary files a/examples/Mkdir.class and /dev/null differ
diff --git a/examples/NodeStatus.class b/examples/NodeStatus.class
deleted file mode 100644 (file)
index 12e8052..0000000
Binary files a/examples/NodeStatus.class and /dev/null differ
diff --git a/examples/OpenExclusive.class b/examples/OpenExclusive.class
deleted file mode 100644 (file)
index 1802220..0000000
Binary files a/examples/OpenExclusive.class and /dev/null differ
diff --git a/examples/PeekNamedPipe$ReceiverThread.class b/examples/PeekNamedPipe$ReceiverThread.class
deleted file mode 100644 (file)
index 642652c..0000000
Binary files a/examples/PeekNamedPipe$ReceiverThread.class and /dev/null differ
diff --git a/examples/PeekNamedPipe.class b/examples/PeekNamedPipe.class
deleted file mode 100644 (file)
index dcbf77f..0000000
Binary files a/examples/PeekNamedPipe.class and /dev/null differ
diff --git a/examples/PipeTalk$ReceiverThread.class b/examples/PipeTalk$ReceiverThread.class
deleted file mode 100644 (file)
index d05ca7a..0000000
Binary files a/examples/PipeTalk$ReceiverThread.class and /dev/null differ
diff --git a/examples/PipeTalk.class b/examples/PipeTalk.class
deleted file mode 100644 (file)
index d297503..0000000
Binary files a/examples/PipeTalk.class and /dev/null differ
diff --git a/examples/Put.class b/examples/Put.class
deleted file mode 100644 (file)
index 43b1e70..0000000
Binary files a/examples/Put.class and /dev/null differ
diff --git a/examples/Query.class b/examples/Query.class
deleted file mode 100644 (file)
index 0112790..0000000
Binary files a/examples/Query.class and /dev/null differ
diff --git a/examples/RenameTo.class b/examples/RenameTo.class
deleted file mode 100644 (file)
index c169e35..0000000
Binary files a/examples/RenameTo.class and /dev/null differ
diff --git a/examples/SetAttrs.class b/examples/SetAttrs.class
deleted file mode 100644 (file)
index d36bada..0000000
Binary files a/examples/SetAttrs.class and /dev/null differ
diff --git a/examples/SetTime.class b/examples/SetTime.class
deleted file mode 100644 (file)
index 79b5e36..0000000
Binary files a/examples/SetTime.class and /dev/null differ
diff --git a/examples/SidCacheTest.class b/examples/SidCacheTest.class
deleted file mode 100644 (file)
index fd2890b..0000000
Binary files a/examples/SidCacheTest.class and /dev/null differ
diff --git a/examples/SidCrawler.class b/examples/SidCrawler.class
deleted file mode 100644 (file)
index ba712c5..0000000
Binary files a/examples/SidCrawler.class and /dev/null differ
diff --git a/examples/SlowRead.class b/examples/SlowRead.class
deleted file mode 100644 (file)
index 8e87e10..0000000
Binary files a/examples/SlowRead.class and /dev/null differ
diff --git a/examples/SlowWrite.class b/examples/SlowWrite.class
deleted file mode 100644 (file)
index 84a1cff..0000000
Binary files a/examples/SlowWrite.class and /dev/null differ
diff --git a/examples/SmbCrawler.class b/examples/SmbCrawler.class
deleted file mode 100644 (file)
index efdb5e3..0000000
Binary files a/examples/SmbCrawler.class and /dev/null differ
diff --git a/examples/SmbShell.class b/examples/SmbShell.class
deleted file mode 100644 (file)
index b9096fa..0000000
Binary files a/examples/SmbShell.class and /dev/null differ
diff --git a/examples/SmbTableFile.class b/examples/SmbTableFile.class
deleted file mode 100644 (file)
index c1bfe46..0000000
Binary files a/examples/SmbTableFile.class and /dev/null differ
diff --git a/examples/SmbTableFileRecord.class b/examples/SmbTableFileRecord.class
deleted file mode 100644 (file)
index b5d68ff..0000000
Binary files a/examples/SmbTableFileRecord.class and /dev/null differ
diff --git a/examples/T2Crawler$CrawlerThread.class b/examples/T2Crawler$CrawlerThread.class
deleted file mode 100644 (file)
index 0b40e5c..0000000
Binary files a/examples/T2Crawler$CrawlerThread.class and /dev/null differ
diff --git a/examples/T2Crawler$Semaphore.class b/examples/T2Crawler$Semaphore.class
deleted file mode 100644 (file)
index af3b771..0000000
Binary files a/examples/T2Crawler$Semaphore.class and /dev/null differ
diff --git a/examples/T2Crawler.class b/examples/T2Crawler.class
deleted file mode 100644 (file)
index 4176b41..0000000
Binary files a/examples/T2Crawler.class and /dev/null differ
diff --git a/examples/TestRandomAccess$TestRecord.class b/examples/TestRandomAccess$TestRecord.class
deleted file mode 100644 (file)
index 872eb31..0000000
Binary files a/examples/TestRandomAccess$TestRecord.class and /dev/null differ
diff --git a/examples/TestRandomAccess.class b/examples/TestRandomAccess.class
deleted file mode 100644 (file)
index 5fdf0df..0000000
Binary files a/examples/TestRandomAccess.class and /dev/null differ
diff --git a/examples/TestSmbURL.class b/examples/TestSmbURL.class
deleted file mode 100644 (file)
index d73dd32..0000000
Binary files a/examples/TestSmbURL.class and /dev/null differ
diff --git a/examples/TestUnicode.class b/examples/TestUnicode.class
deleted file mode 100644 (file)
index 92304e8..0000000
Binary files a/examples/TestUnicode.class and /dev/null differ
diff --git a/examples/ThreadedNbtQuery$QThread.class b/examples/ThreadedNbtQuery$QThread.class
deleted file mode 100644 (file)
index 1259b6d..0000000
Binary files a/examples/ThreadedNbtQuery$QThread.class and /dev/null differ
diff --git a/examples/ThreadedNbtQuery.class b/examples/ThreadedNbtQuery.class
deleted file mode 100644 (file)
index 0d21e06..0000000
Binary files a/examples/ThreadedNbtQuery.class and /dev/null differ
diff --git a/examples/ThreadedSmbCrawler$DirEntry.class b/examples/ThreadedSmbCrawler$DirEntry.class
deleted file mode 100644 (file)
index f849d93..0000000
Binary files a/examples/ThreadedSmbCrawler$DirEntry.class and /dev/null differ
diff --git a/examples/ThreadedSmbCrawler$SmbCrawlerThread.class b/examples/ThreadedSmbCrawler$SmbCrawlerThread.class
deleted file mode 100644 (file)
index a95e988..0000000
Binary files a/examples/ThreadedSmbCrawler$SmbCrawlerThread.class and /dev/null differ
diff --git a/examples/ThreadedSmbCrawler.class b/examples/ThreadedSmbCrawler.class
deleted file mode 100644 (file)
index e0747bf..0000000
Binary files a/examples/ThreadedSmbCrawler.class and /dev/null differ
diff --git a/examples/ThreadedUniQuery$QThread.class b/examples/ThreadedUniQuery$QThread.class
deleted file mode 100644 (file)
index 02d02e0..0000000
Binary files a/examples/ThreadedUniQuery$QThread.class and /dev/null differ
diff --git a/examples/ThreadedUniQuery.class b/examples/ThreadedUniQuery.class
deleted file mode 100644 (file)
index 08632f7..0000000
Binary files a/examples/ThreadedUniQuery.class and /dev/null differ
diff --git a/examples/Torture1.class b/examples/Torture1.class
deleted file mode 100644 (file)
index 72d5f77..0000000
Binary files a/examples/Torture1.class and /dev/null differ
diff --git a/examples/Torture2.class b/examples/Torture2.class
deleted file mode 100644 (file)
index e688b4f..0000000
Binary files a/examples/Torture2.class and /dev/null differ
diff --git a/examples/TortureTest5.class b/examples/TortureTest5.class
deleted file mode 100644 (file)
index cadf7c2..0000000
Binary files a/examples/TortureTest5.class and /dev/null differ
diff --git a/examples/TransactNamedPipe.class b/examples/TransactNamedPipe.class
deleted file mode 100644 (file)
index faea615..0000000
Binary files a/examples/TransactNamedPipe.class and /dev/null differ
diff --git a/examples/URLTest.class b/examples/URLTest.class
deleted file mode 100644 (file)
index 5263435..0000000
Binary files a/examples/URLTest.class and /dev/null differ
diff --git a/examples/VerifyGuest.class b/examples/VerifyGuest.class
deleted file mode 100644 (file)
index 6a8ce08..0000000
Binary files a/examples/VerifyGuest.class and /dev/null differ
diff --git a/examples/VerifyIO.class b/examples/VerifyIO.class
deleted file mode 100644 (file)
index 1168477..0000000
Binary files a/examples/VerifyIO.class and /dev/null differ
diff --git a/examples/VerifyReads.class b/examples/VerifyReads.class
deleted file mode 100644 (file)
index ff0d0a1..0000000
Binary files a/examples/VerifyReads.class and /dev/null differ
diff --git a/examples/Worker.class b/examples/Worker.class
deleted file mode 100644 (file)
index 25fa3b2..0000000
Binary files a/examples/Worker.class and /dev/null differ
index c44872f..cee995c 100644 (file)
@@ -5,16 +5,16 @@ CLASSPATH=../build:.
 PROPERTIES=../../user2.prp
 RUN="${JAVA_HOME}/bin/java -cp ${CLASSPATH} -Djcifs.properties=${PROPERTIES}"
 
-#SERVER=192.168.2.110
+SERVER=192.168.2.110
 #SERVER=dc1.w.net
-#SHARE=tmp
-#DIR=test
+SHARE=tmp
+DIR=test
 
 # Domain-based DFS
 #SERVER=192.168.2.110
-SERVER=w.net
-SHARE=root2
-DIR=test
+#SERVER=w.net
+#SHARE=root2
+#DIR=test
 
 # smb://fs4.w.net/DFSStandaloneRoot/DFSStandaloneLink/test/
 # smb://dc1.w.net/root2/link2/test/
index 42a568e..3405ffc 100644 (file)
@@ -78,7 +78,9 @@ public class DcerpcBinding {
     Object getOption(String key) {
         if (key.equals("endpoint"))
             return endpoint;
-        return options.get(key);
+        if (options != null)
+            return options.get(key);
+        return null;
     }
 
     public String toString() {
index 279dd16..7a60519 100644 (file)
@@ -119,6 +119,7 @@ public abstract class DcerpcHandle implements DcerpcConstants {
     }
 
     public void bind() throws DcerpcException, IOException {
+synchronized (this) {
         try {
             state = 1;
             DcerpcMessage bind = new DcerpcBind(binding, this);
@@ -127,6 +128,7 @@ public abstract class DcerpcHandle implements DcerpcConstants {
             state = 0;
             throw ioe;
         }
+}
     }
     public void sendrecv(DcerpcMessage msg) throws DcerpcException, IOException {
         byte[] stub, frag;
index f298341..b027e69 100644 (file)
@@ -38,6 +38,17 @@ public class DcerpcPipeHandle extends DcerpcHandle {
                 throws UnknownHostException, MalformedURLException, DcerpcException {
         binding = DcerpcHandle.parseBinding(url);
         url = "smb://" + binding.server + "/IPC$/" + binding.endpoint.substring(6);
+
+        String params = "", server, address;
+        server = (String)binding.getOption("server");
+        if (server != null)
+            params += "&server=" + server;
+        address = (String)binding.getOption("address");
+        if (server != null)
+            params += "&address=" + address;
+        if (params.length() > 0)
+            url += "?" + params.substring(1);
+
         pipe = new SmbNamedPipe(url,
                 /* This 0x20000 bit is going to get chopped! */
                 (0x2019F << 16) | SmbNamedPipe.PIPE_TYPE_RDWR | SmbNamedPipe.PIPE_TYPE_DCE_TRANSACT,
@@ -89,6 +100,7 @@ public class DcerpcPipeHandle extends DcerpcHandle {
         }
     }
     public void close() throws IOException {
+        state = 0;
         if (out != null)
             out.close();
     }
index 558a49d..bd7f0fb 100644 (file)
@@ -788,9 +788,13 @@ public final class NbtAddress {
  */ 
 
     public String getHostName() {
-        try {
-            checkData();
-        } catch( UnknownHostException uhe ) {
+        /* 2010 - We no longer try a Node Status to get the
+         * hostname because apparently some servers do not respond
+         * anymore. I think everyone post Windows 98 will accept
+         * an IP address as the tconHostName which is the principal
+         * use of this method.
+         */
+        if (hostName == UNKNOWN_NAME) {
             return getHostAddress();
         }
         return hostName.name;
index 84217a7..f926400 100644 (file)
@@ -23,6 +23,7 @@ import java.security.*;
 import jcifs.ntlmssp.*;
 import jcifs.util.LogStream;
 import jcifs.util.Hexdump;
+import jcifs.util.Encdec;
 
 /**
 For initiating NTLM authentication (including NTLMv2). If you want to add NTLMv2 authentication support to something this is what you want to use. See the code for details. Note that JCIFS does not implement the acceptor side of NTLM authentication.
@@ -37,6 +38,7 @@ public class NtlmContext {
     boolean isEstablished = false;
     byte[] serverChallenge = null;
     byte[] signingKey = null;
+    String netbiosName = null;
     int state = 1;
     LogStream log;
 
@@ -88,7 +90,33 @@ public class NtlmContext {
     {
         return signingKey;
     }
+    public String getNetbiosName()
+    {
+        return netbiosName;
+    }
+
+    private String getNtlmsspListItem(byte[] type2token, int id0)
+    {
+        int ri = 58;
+
+        for ( ;; ) {
+            int id = Encdec.dec_uint16le(type2token, ri);
+            int len = Encdec.dec_uint16le(type2token, ri + 2);
+            ri += 4;
+            if (id == 0 || (ri + len) > type2token.length) {
+                break;
+            } else if (id == id0) {
+                try {
+                    return new String(type2token, ri, len, SmbConstants.UNI_ENCODING);
+                } catch (java.io.UnsupportedEncodingException uee) {
+                    break;
+                }
+            }
+            ri += len;
+        }
 
+        return null;
+    }
     public byte[] initSecContext(byte[] token, int offset, int len) throws SmbException {
         switch (state) {
             case 1:
@@ -116,6 +144,8 @@ public class NtlmContext {
                     serverChallenge = msg2.getChallenge();
                     ntlmsspFlags &= msg2.getFlags();
 
+//                  netbiosName = getNtlmsspListItem(token, 0x0001);
+
                     Type3Message msg3 = new Type3Message(msg2,
                                 auth.getPassword(),
                                 auth.getDomain(),
index 1c8ea57..2fd1c6e 100644 (file)
@@ -29,9 +29,10 @@ class SmbComTreeConnectAndX extends AndXServerMessageBlock {
 
     private SmbSession session;
     private boolean disconnectTid = false;
-    private String path, service;
+    private String service;
     private byte[] password;
     private int passwordLength;
+    String path;
 
     /* batchLimits indecies
      *
index 07fdf22..9f63f4c 100644 (file)
@@ -831,6 +831,13 @@ int addressIndex;
                 addresses[0] = UniAddress.getByName( server );
                 return getNextAddress();
             }
+            String address = queryLookup(query, "address");
+            if (address != null && address.length() > 0) {
+                byte[] ip = java.net.InetAddress.getByName(address).getAddress();
+                addresses = new UniAddress[1];
+                addresses[0] = new UniAddress(java.net.InetAddress.getByAddress(host, ip));
+                return getNextAddress();
+            }
         }
 
         if (host.length() == 0) {
index 60646f3..0ebc807 100644 (file)
@@ -174,6 +174,7 @@ synchronized (DOMAIN) {
     SmbTransport transport = null;
     NtlmPasswordAuthentication auth;
     long expiration;
+    String netbiosName = null;
 
     SmbSession( UniAddress address, int port,
                 InetAddress localAddr, int localPort,
@@ -224,6 +225,19 @@ synchronized (transport()) {
         if( response != null && response.received ) {
             return;
         }
+
+        if (request instanceof SmbComTreeConnectAndX) {
+            SmbComTreeConnectAndX tcax = (SmbComTreeConnectAndX)request;
+            if (netbiosName != null && tcax.path.endsWith("\\IPC$")) {
+                /* Some pipes may require that the hostname in the tree connect
+                 * be the netbios name. So if we have the netbios server name
+                 * from the NTLMSSP type 2 message, and the share is IPC$, we
+                 * assert that the tree connect path uses the netbios hostname.
+                 */
+                tcax.path = "\\\\" + netbiosName + "\\IPC$";
+            }
+        }
+
         request.uid = uid;
         request.auth = auth;
         try {
@@ -344,6 +358,8 @@ synchronized (transport()) {
     
                         if (nctx.isEstablished()) {
 
+                            netbiosName = nctx.getNetbiosName();
+
                             connectionState = 2;
 
                             state = 0;
@@ -429,6 +445,8 @@ synchronized (transport()) {
             return;
         connectionState = 3; // disconnecting
 
+        netbiosName = null;
+
         for( Enumeration e = trees.elements(); e.hasMoreElements(); ) {
             SmbTree t = (SmbTree)e.nextElement();
             t.treeDisconnect( inError );
index 3a65248..2262551 100644 (file)
@@ -154,7 +154,7 @@ synchronized (session.transport()) {
              */
     
             session.transport.connect();
-    
+
             unc = "\\\\" + session.transport.tconHostName + '\\' + share;
     
             /* IBM iSeries doesn't like specifying a service. Always reset