[
https://issues.apache.org/jira/browse/NET-283?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Sebb resolved NET-283.
----------------------
Fix Version/s: 2.1
Resolution: Fixed
> SocketClient should ensure input and output streams are closed
> --------------------------------------------------------------
>
> Key: NET-283
> URL: https://issues.apache.org/jira/browse/NET-283
> Project: Commons Net
> Issue Type: Improvement
> Affects Versions: 2.0
> Environment: All
> Reporter: Theuns Cloete
> Fix For: 2.1
>
>
> From the Java 6 SDK, the socket.close() method is responsible for also
> closing its input and output streams. But if socket.close() throws an
> IOException before the streams could be closed, the streams will remain open
> and they will also not be set to null. We need a way to ensure that the input
> and output streams are also closed. There are various ways to achieve this:
> Proposal 1:
> Implement a public SocketClient.paranoidDisconnect() method that makes sure
> the socket, input and output are closed:
> public void paranoidDisconnect() {
> try { this.disconnect(); }
> catch (IOException ioe) {
> // the first thing that SocketClient.disconnect() does is to close the socket
> // but if that fails, we have to manually close the input and output streams
> if (this.input != null) {
> try { this._input_.close(); }
> catch (IOException ioe2) {
> }
> }
> if (this.output != null) {
> try { this._output_.close(); }
> catch (IOException ioe3) {
> }
> }
> }
> finally { this._socket_ = null; this._input_ = null; this._output_ = null; }
> }
> Proposal 2:
> Expose the socket, input and output stream objects with getter methods at the
> SocketClient level, handing the responsibility over to the calling
> application. TelnetClient already exposes the input and output streams with
> getInputStream() and getOutputStream() methods respectively.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.