jcifs eats InterruptedException

Igor Golikov <[email protected]> Fri, 6 Feb 2015 11:23:02 +0300
Newsgroups gmane.network.samba.java
Message-ID <CAA+XuvMomzC+6tPYAiH=RY66W4yW2JNjhr2SU=HmFA-6DmFiBw@mail.gmail.com>
--001a113602ac08f9e0050e6721b1
Content-Type: text/plain; charset=UTF-8

Hi all,

I found that it is impossible to interrupt thread that performs some
operations using jcifs.

Here is an example

    java.lang.Object.wait(Object.java:-2)
    java.lang.Object.wait(Object.java:503)
    jcifs.UniAddress.lookupServerOrWorkgroup(UniAddress.java:176)
<----------- part A
    jcifs.UniAddress.getAllByName(UniAddress.java:290)
    jcifs.UniAddress.getByName(UniAddress.java:245) <----------- part B
    jcifs.smb.Dfs.getTrustedDomains(Dfs.java:62)
    jcifs.smb.Dfs.resolve(Dfs.java:167)
    jcifs.smb.SmbFile.doConnect(SmbFile.java:902)
    jcifs.smb.SmbFile.connect(SmbFile.java:954)
    jcifs.smb.SmbFile.connect0(SmbFile.java:880)
    jcifs.smb.SmbFile.open0(SmbFile.java:972)
    jcifs.smb.SmbFile.open(SmbFile.java:1006)
    jcifs.smb.SmbFileOutputStream.<init>(SmbFileOutputStream.java:142)
    jcifs.smb.SmbFileOutputStream.<init>(SmbFileOutputStream.java:97)
    jcifs.smb.SmbFileOutputStream.<init>(SmbFileOutputStream.java:67)


Part A - replacing InterruptedException with UnknownHostException
============================================
...
} catch( InterruptedException ie ) {
    throw new UnknownHostException( name );
}
...


Part B - hiding UnknownHostException
============================================
...
} catch (IOException ioe) {
    if (log.level >= 3)
        ioe.printStackTrace(log);
    if (strictView && ioe instanceof SmbAuthException) {
        throw (SmbAuthException)ioe;
    }
}
...


Why it hides InterruptedException?

--001a113602ac08f9e0050e6721b1
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div>Hi all,</div><div><br></div><div>I found that it is i=
mpossible to interrupt thread that performs some operations using jcifs.</d=
iv><div><br></div><div>Here is an example</div><div><br></div><div>=C2=A0 =
=C2=A0 java.lang.Object.wait(Object.java:-2)</div><div>=C2=A0 =C2=A0 java.l=
ang.Object.wait(Object.java:503)</div><div>=C2=A0 =C2=A0 jcifs.UniAddress.l=
ookupServerOrWorkgroup(UniAddress.java:176) &lt;----------- part A</div><di=
v>=C2=A0 =C2=A0 jcifs.UniAddress.getAllByName(UniAddress.java:290)</div><di=
v>=C2=A0 =C2=A0 jcifs.UniAddress.getByName(UniAddress.java:245) &lt;-------=
---- part B</div><div>=C2=A0 =C2=A0 jcifs.smb.Dfs.getTrustedDomains(Dfs.jav=
a:62)</div><div>=C2=A0 =C2=A0 jcifs.smb.Dfs.resolve(Dfs.java:167)</div><div=
>=C2=A0 =C2=A0 jcifs.smb.SmbFile.doConnect(SmbFile.java:902)</div><div>=C2=
=A0 =C2=A0 jcifs.smb.SmbFile.connect(SmbFile.java:954)</div><div>=C2=A0 =C2=
=A0 jcifs.smb.SmbFile.connect0(SmbFile.java:880)</div><div>=C2=A0 =C2=A0 jc=
ifs.smb.SmbFile.open0(SmbFile.java:972)</div><div>=C2=A0 =C2=A0 jcifs.smb.S=
mbFile.open(SmbFile.java:1006)</div><div>=C2=A0 =C2=A0 jcifs.smb.SmbFileOut=
putStream.&lt;init&gt;(SmbFileOutputStream.java:142)</div><div>=C2=A0 =C2=
=A0 jcifs.smb.SmbFileOutputStream.&lt;init&gt;(SmbFileOutputStream.java:97)=
</div><div>=C2=A0 =C2=A0 jcifs.smb.SmbFileOutputStream.&lt;init&gt;(SmbFile=
OutputStream.java:67)</div><div><br></div><div><br></div><div>Part A - repl=
acing InterruptedException with UnknownHostException</div><div>=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D</div><div>...</div><div>} cat=
ch( InterruptedException ie ) {</div><div>=C2=A0 =C2=A0 throw new UnknownHo=
stException( name );</div><div>}</div><div>...</div><div><br></div><div><br=
></div><div>Part B - hiding UnknownHostException</div><div>=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D</div><div>...</div><div>} catch =
(IOException ioe) {</div><div>=C2=A0 =C2=A0 if (log.level &gt;=3D 3)</div><=
div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 ioe.printStackTrace(log);</div><div>=C2=A0 =
=C2=A0 if (strictView &amp;&amp; ioe instanceof SmbAuthException) {</div><d=
iv>=C2=A0 =C2=A0 =C2=A0 =C2=A0 throw (SmbAuthException)ioe;</div><div>=C2=
=A0 =C2=A0 }</div><div>}</div><div>...</div><div><br></div><div><br></div><=
div>Why it hides InterruptedException?</div></div>

--001a113602ac08f9e0050e6721b1--