[jcifs] NullPointerException at listFiles

Michael B Allen ioplex at gmail.com
Sun Mar 4 20:32:59 MST 2012


On Fri, Mar 2, 2012 at 5:53 AM, Gabor Herr <gabor.e.herr at googlemail.com> wrote:
> Hi All,
>
> we encountered the same problem as Dora reported
> https://lists.samba.org/archive/jcifs/2012-January/009856.html with
> jcifs-1.3.16 in a different usage scenario. We have a component that
> periodically polls a remote directory with listFiles. The
> NullPointerException occurs irregularly during the day but quite often about
> every 5-10 minutes. We figured out, that the root cause was an I/O Exception
> due to timeout on the socket transport level, probably because the remote
> server has not responded or the network connection failed. As Mike mentioned
> in his post, there is a problem in jcifs implementation that tconHostName is
> explicitly set to null, when a transport exception is thrown. On a reconnect
> attempt in Dfs.resolve() the NPE is thrown, because tconHostName is null.
>
> The following patch fixed the problem for us. We changed the finally block
> to not clear tconHostName and added code to the constructor to ensure, that
>  it always contains a valid hostname.
>
> Index: C:/Documents and Settings/kjr130/My
> Documents/Downloads/jcifs_1.3.16.orig/jcifs-1.3.16.orig/src/jcifs/smb/SmbTransport.java
> ===================================================================
> --- C:/Documents and Settings/kjr130/My
> Documents/Downloads/jcifs_1.3.16.orig/jcifs-1.3.16.orig/src/jcifs/smb/SmbTransport.java
>        (revision 632)
> +++ C:/Documents and Settings/kjr130/My
> Documents/Downloads/jcifs_1.3.16.orig/jcifs-1.3.16.orig/src/jcifs/smb/SmbTransport.java
>        (working copy)
> @@ -114,6 +114,9 @@
>          this.port = port;
>          this.localAddr = localAddr;
>          this.localPort = localPort;
> +        if (address != null) {
> +                this.tconHostName = address.getHostName();
> +        }

Hi Gabor,

I don't think it's a good idea to set the tconHostName in the constructor.

Please post the full NPE stack trace.

Mike

>      }
>
>      synchronized SmbSession getSmbSession() {
> @@ -371,7 +374,7 @@
>          } finally {
>              digest = null;
>              socket = null;
> -            tconHostName = null;
> +//            tconHostName = null;
>          }
>      }
>
> I would greatly appreciate, if you could include this fix into upcoming
> jcifs releases.
>
> Thanks.
>
> Gabor



-- 
Michael B Allen
Java Active Directory Integration
http://www.ioplex.com/


More information about the jCIFS mailing list