修复Sftp中传入Session重连时逻辑错误问题(issue#IB69U8@Gitee)

This commit is contained in:
Looly 2024-11-24 15:42:56 +08:00
parent fc60818326
commit d11693fb2d
2 changed files with 14 additions and 6 deletions

View File

@ -16,6 +16,7 @@
* 【cron 】 修复cron模块依赖log模块问题
* 【extra 】 修复MailUtil发送html格式邮件无法正常展示图片问题(pr#1279@Gitee)
* 【core 】 【可能的向下兼容问题】修复双引号转义符转义错误问题,修改规则后,对非闭合双引号字段的策略变更,如"aa则被识别为aa(issue#IB5UQ8@Gitee)
* 【extra 】 修复Sftp中传入Session重连时逻辑错误问题(issue#IB69U8@Gitee)
-------------------------------------------------------------------------------------------------------------
# 5.8.33(2024-11-05)

View File

@ -8,13 +8,9 @@ import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.ftp.AbstractFtp;
import cn.hutool.extra.ftp.FtpConfig;
import cn.hutool.extra.ftp.FtpException;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.*;
import com.jcraft.jsch.ChannelSftp.LsEntry;
import com.jcraft.jsch.ChannelSftp.LsEntrySelector;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.SftpATTRS;
import com.jcraft.jsch.SftpException;
import com.jcraft.jsch.SftpProgressMonitor;
import java.io.File;
import java.io.InputStream;
@ -111,7 +107,7 @@ public class Sftp extends AbstractFtp {
* @since 4.1.14
*/
public Sftp(Session session, Charset charset) {
super(FtpConfig.create().setCharset(charset));
super(FtpConfig.create().setCharset(charset).setHost(session.getHost()).setPort(session.getPort()));
init(session, charset);
}
@ -172,6 +168,17 @@ public class Sftp extends AbstractFtp {
* @since 5.3.3
*/
public void init() {
// issue#IB69U8 如果用户传入Session对象则不能使用配置初始化而是尝试重新连接
if(StrUtil.isEmpty(this.ftpConfig.getHost()) && null != this.session){
try {
this.session.connect((int) this.ftpConfig.getConnectionTimeout());
} catch (JSchException e) {
throw new JschRuntimeException(e);
}
init(this.session, this.ftpConfig.getCharset());
return;
}
init(this.ftpConfig);
}