修复FTP退出错误,导致socket连接数占满
Change-Id: I40efe853fbf016f251c40def23e6e1f80e893cef
diff --git a/mbtk/mbtk_lib/src/mbtk_ftp.c b/mbtk/mbtk_lib/src/mbtk_ftp.c
index 8c1340c..1376679 100755
--- a/mbtk/mbtk_lib/src/mbtk_ftp.c
+++ b/mbtk/mbtk_lib/src/mbtk_ftp.c
@@ -2056,8 +2056,12 @@
if (list_remove(ftp_client_list, info))
{
int err;
- sock_close(&info->net_info, &info->sock_info[FTP_SOCK_CTRL], FTP_TIMEOUT, &err);
- sock_close(&info->net_info, &info->sock_info[FTP_SOCK_DATA], FTP_TIMEOUT, &err);
+ if(info->auth_type == FTP_AUTH_TYPE_NON) {
+ sock_close(&info->net_info, &info->sock_info[FTP_SOCK_CTRL], FTP_TIMEOUT, &err);
+ sock_close(&info->net_info, &info->sock_info[FTP_SOCK_DATA], FTP_TIMEOUT, &err);
+ } else {
+ mbtk_sock_deinit(info->ftp_ssl_handle);
+ }
ftp_free_func(info);
}
@@ -2090,17 +2094,32 @@
info->state = FTP_STATE_CONNECTED;
}
- if (sock_close(&info->net_info, &info->sock_info[FTP_SOCK_CTRL], FTP_TIMEOUT, &err))
- {
- LOGE("Close ctrl socket fail[%d].", err);
- return FTP_ERR_NET_CLOSE;
+ if(info->auth_type == FTP_AUTH_TYPE_NON) {
+ if (sock_close(&info->net_info, &info->sock_info[FTP_SOCK_CTRL], FTP_TIMEOUT, &err))
+ {
+ LOGE("Close ctrl socket fail[%d].", err);
+ return FTP_ERR_NET_CLOSE;
+ }
+
+ if (sock_close(&info->net_info, &info->sock_info[FTP_SOCK_DATA], FTP_TIMEOUT, &err))
+ {
+ LOGE("Close data socket fail[%d].", err);
+ return FTP_ERR_NET_CLOSE;
+ }
+ } else {
+ if(mbtk_sock_close(info->ftp_ssl_handle,info->session,6000,&err))
+ {
+ LOGE("Close ssl ctrl socket fail[%d].", err);
+ //return FTP_ERR_NET_CLOSE;
+ }
+
+ if(mbtk_sock_close(info->ftp_ssl_handle,info->session_data,6000,&err))
+ {
+ LOGE("Close ssl data socket fail[%d].", err);
+ //return FTP_ERR_NET_CLOSE;
+ }
}
- if (sock_close(&info->net_info, &info->sock_info[FTP_SOCK_DATA], FTP_TIMEOUT, &err))
- {
- LOGE("Close data socket fail[%d].", err);
- return FTP_ERR_NET_CLOSE;
- }
info->state = FTP_STATE_NON;
info->data_mode = FTP_MODE_PASSIVE;