From: s_kawamoto Date: Sat, 21 Apr 2012 11:03:18 +0000 (+0900) Subject: Change intervals between keep alive packets. X-Git-Url: http://git.osdn.net/view?p=ffftp%2Fffftp.git;a=commitdiff_plain;h=66613203e90b0402574ce35f6cf160adc5057db1 Change intervals between keep alive packets. --- diff --git a/FFFTP_Eng_Release/FFFTP.exe b/FFFTP_Eng_Release/FFFTP.exe index f78c391..602dd6f 100644 Binary files a/FFFTP_Eng_Release/FFFTP.exe and b/FFFTP_Eng_Release/FFFTP.exe differ diff --git a/Release/FFFTP.exe b/Release/FFFTP.exe index c7978e9..e3d3ff8 100644 Binary files a/Release/FFFTP.exe and b/Release/FFFTP.exe differ diff --git a/connect.c b/connect.c index 3914924..a931db0 100644 --- a/connect.c +++ b/connect.c @@ -38,6 +38,8 @@ // IPv6対応 //#include #include +// 切断対策 +#include #include #include @@ -102,6 +104,8 @@ extern int FwallLower; extern int FwallDelimiter; extern int PasvDefault; extern int QuickAnonymous; +// 切断対策 +extern int TimeOut; /*===== ローカルなワーク =====*/ @@ -1437,6 +1441,8 @@ static SOCKET DoConnectCrypt(int CryptMode, HOSTDATA* HostData, char *Host, char static const char *SiteTbl[4] = { "SITE", "site", "OPEN", "open" }; char TmpBuf[ONELINE_BUF_SIZE]; struct linger LingerOpt; + struct tcp_keepalive KeepAlive; + DWORD dwTmp; // 暗号化通信対応 ContSock = INVALID_SOCKET; @@ -1510,6 +1516,12 @@ static SOCKET DoConnectCrypt(int CryptMode, HOSTDATA* HostData, char *Host, char Flg = 1; if(setsockopt(ContSock, SOL_SOCKET, SO_KEEPALIVE, (LPSTR)&Flg, sizeof(Flg)) == SOCKET_ERROR) ReportWSError("setsockopt", WSAGetLastError()); + // 切断対策 + KeepAlive.onoff = 1; + KeepAlive.keepalivetime = TimeOut * 1000; + KeepAlive.keepaliveinterval = 1000; + if(WSAIoctl(ContSock, SIO_KEEPALIVE_VALS, &KeepAlive, sizeof(struct tcp_keepalive), NULL, 0, &dwTmp, NULL, NULL) == SOCKET_ERROR) + ReportWSError("WSAIoctl", WSAGetLastError()); LingerOpt.l_onoff = 1; LingerOpt.l_linger = 90; if(setsockopt(ContSock, SOL_SOCKET, SO_LINGER, (LPSTR)&LingerOpt, sizeof(LingerOpt)) == SOCKET_ERROR)