Author: imario Date: Tue Mar 28 22:29:53 2006 New Revision: 389691 URL: http://svn.apache.org/viewcvs?rev=389691&view=rev Log: retry sftp stat if it failed
Modified: jakarta/commons/proper/vfs/trunk/src/java/org/apache/commons/vfs/provider/sftp/SftpFileObject.java Modified: jakarta/commons/proper/vfs/trunk/src/java/org/apache/commons/vfs/provider/sftp/SftpFileObject.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/vfs/trunk/src/java/org/apache/commons/vfs/provider/sftp/SftpFileObject.java?rev=389691&r1=389690&r2=389691&view=diff ============================================================================== --- jakarta/commons/proper/vfs/trunk/src/java/org/apache/commons/vfs/provider/sftp/SftpFileObject.java (original) +++ jakarta/commons/proper/vfs/trunk/src/java/org/apache/commons/vfs/provider/sftp/SftpFileObject.java Tue Mar 28 22:29:53 2006 @@ -106,22 +106,40 @@ */ private void statSelf() throws Exception { - final ChannelSftp channel = fileSystem.getChannel(); + ChannelSftp channel = fileSystem.getChannel(); try { setStat(channel.stat(relPath)); } catch (final SftpException e) { - // TODO - not strictly true, but jsch 0.1.2 does not give us - // enough info in the exception. Should be using: - // if ( e.id == ChannelSftp.SSH_FX_NO_SUCH_FILE ) - // However, sometimes the exception has the correct id, and - // sometimes - // it does not. Need to look into why. - - // Does not exist - attrs = null; + try + { + // maybe the channel has some problems, so recreate the channel and retry + if (e.id != ChannelSftp.SSH_FX_NO_SUCH_FILE) + { + channel.disconnect(); + channel = fileSystem.getChannel(); + setStat(channel.stat(relPath)); + } + else + { + // Really does not exist + attrs = null; + } + } + catch (final SftpException e2) + { + // TODO - not strictly true, but jsch 0.1.2 does not give us + // enough info in the exception. Should be using: + // if ( e.id == ChannelSftp.SSH_FX_NO_SUCH_FILE ) + // However, sometimes the exception has the correct id, and + // sometimes + // it does not. Need to look into why. + + // Does not exist + attrs = null; + } } finally { --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]