summaryrefslogtreecommitdiffabout
authorMichael Krelin <hacker@klever.net>2006-07-02 22:16:25 (UTC)
committer Michael Krelin <hacker@klever.net>2006-07-02 22:16:25 (UTC)
commit577427e68ef10a4d2b75d28e42b22952ae3bcf23 (patch) (unidiff)
tree24c8fc94ea6524059cab7927ef76639bb1a1a98d
parent24e693797daef020ece3fa19bb5acce000e37165 (diff)
downloadpumpkin-577427e68ef10a4d2b75d28e42b22952ae3bcf23.zip
pumpkin-577427e68ef10a4d2b75d28e42b22952ae3bcf23.tar.gz
pumpkin-577427e68ef10a4d2b75d28e42b22952ae3bcf23.tar.bz2
Do not close RRQ socket until the last ACK is received.
git-svn-id: http://svn.klever.net/kin/pumpkin/trunk@152 fe716a7a-6dde-0310-88d9-d003556173a8
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--PumpKINDlg.cpp70
-rw-r--r--PumpKINDlg.h3
-rw-r--r--pumpkin.mak238
3 files changed, 107 insertions, 204 deletions
diff --git a/PumpKINDlg.cpp b/PumpKINDlg.cpp
index 070f3e8..2a01918 100644
--- a/PumpKINDlg.cpp
+++ b/PumpKINDlg.cpp
@@ -581,6 +581,6 @@ int rv = socket->SendTo(udpBase(),length,(SOCKADDR*)saddr,sizeof(SOCKADDR_IN));
581 581
582void CXferSocket::DoSelect() 582void CXferSocket::DoSelect(BOOL do_select)
583{ 583{
584 if(m_Peer.sin_addr.s_addr!=INADDR_NONE) 584 if(m_Peer.sin_addr.s_addr!=INADDR_NONE)
585 AsyncSelect(FD_CLOSE|FD_READ|(m_Queue.IsEmpty()?0:FD_WRITE)); 585 AsyncSelect(FD_CLOSE|FD_READ|((m_Queue.IsEmpty()&&!do_select)?0:FD_WRITE));
586} 586}
@@ -856,7 +856,3 @@ tftp *p = tftp::Allocate(tftp::tftpDATA::tftpSize(m_blkSize));
856 if(bytes<m_blkSize){ 856 if(bytes<m_blkSize){
857 state=stateFinish; 857 state=stateClosing; m_ACKtoClose = m_ACK+1;
858 ASSERT(m_Daddy);
859 CString tmp;
860 tmp.Format(IDS_LOG_XFERRRQFINISHED,(LPCTSTR)m_FileName);
861 m_Daddy->LogLine(tmp);
862 } 858 }
@@ -938,31 +934,31 @@ BOOL rv = TRUE;
938 case tftp::opOACK: 934 case tftp::opOACK:
939 m_ACK=0; 935 {
940 ASSERT(state!=stateFinish); 936 m_ACK=0;
941 { 937 ASSERT(state!=stateFinish);
942 tftp::tftpOptions o; 938 tftp::tftpOptions o;
943 if(p->GetOptions(&o)){ 939 if(p->GetOptions(&o)){
944 CString v; 940 CString v;
945 if(o.Lookup(tftpoBSize,v)){ 941 if(o.Lookup(tftpoBSize,v)){
946 m_blkSize=atoi(v); 942 m_blkSize=atoi(v);
947 if(!m_blkSize){// *** More sanity checks 943 if(!m_blkSize){// *** More sanity checks
948 Deny(tftp::errOption,IDS_TFTP_ERROR_BSIZE); 944 Deny(tftp::errOption,IDS_TFTP_ERROR_BSIZE);
949 rv = TRUE; 945 rv = TRUE;
950 break; 946 break;
947 }
951 } 948 }
952 } 949 if(o.Lookup(tftpoTOut,v)){
953 if(o.Lookup(tftpoTOut,v)){ 950 m_timeOut=atoi(v);
954 m_timeOut=atoi(v); 951 if(!m_timeOut){// *** More sanity checks
955 if(!m_timeOut){// *** More sanity checks 952 Deny(tftp::errOption,IDS_TFTP_ERROR_TOUT);
956 Deny(tftp::errOption,IDS_TFTP_ERROR_TOUT); 953 rv = TRUE;
957 rv = TRUE; 954 break;
958 break; 955 }
956 }
957 if(o.Lookup(tftpoXResume,v)){
958 m_ACK=atoi(v);
959 } 959 }
960 } 960 }
961 if(o.Lookup(tftpoXResume,v)){ 961 UpdateList();
962 m_ACK=atoi(v); 962 DoXfer();
963 }
964 } 963 }
965 UpdateList();
966 DoXfer();
967 }
968 break; 964 break;
@@ -970,3 +966,11 @@ BOOL rv = TRUE;
970 m_ACK=p->data.m_ACK.Block(); 966 m_ACK=p->data.m_ACK.Block();
971 if(state!=stateFinish){ 967 if(state==stateClosing && m_ACK==m_ACKtoClose) {
968 state = stateFinish;
969 ASSERT(m_Daddy);
970 CString tmp;
971 tmp.Format(IDS_LOG_XFERRRQFINISHED,(LPCTSTR)m_FileName);
972 m_Daddy->LogLine(tmp);
973 rv = FALSE;
974 DoSelect(TRUE);
975 }else if(state!=stateFinish){
972 UpdateList(); 976 UpdateList();
diff --git a/PumpKINDlg.h b/PumpKINDlg.h
index c5469f1..23c2657 100644
--- a/PumpKINDlg.h
+++ b/PumpKINDlg.h
@@ -314,3 +314,3 @@ public:
314 virtual void OnReceive(int nErrorCode); 314 virtual void OnReceive(int nErrorCode);
315 void DoSelect(); 315 void DoSelect(BOOL do_select=FALSE);
316 SOCKADDR_IN m_Peer; 316 SOCKADDR_IN m_Peer;
@@ -343,2 +343,3 @@ class CRRQSocket : public CXferSocket {
343public: 343public:
344 UINT m_ACKtoClose;
344 void OnHostKnown(); 345 void OnHostKnown();
diff --git a/pumpkin.mak b/pumpkin.mak
index a22a6fa..bf9e895 100644
--- a/pumpkin.mak
+++ b/pumpkin.mak
@@ -688,5 +688,2 @@ LINK32_OBJS= \
688SOURCE=.\PumpKIN.cpp 688SOURCE=.\PumpKIN.cpp
689
690!IF "$(CFG)" == "PumpKIN - Win32 Release"
691
692DEP_CPP_PUMPK=\ 689DEP_CPP_PUMPK=\
@@ -699,2 +696,5 @@ DEP_CPP_PUMPK=\
699 696
697!IF "$(CFG)" == "PumpKIN - Win32 Release"
698
699
700"$(INTDIR)\PumpKIN.obj" : $(SOURCE) $(DEP_CPP_PUMPK) "$(INTDIR)"\ 700"$(INTDIR)\PumpKIN.obj" : $(SOURCE) $(DEP_CPP_PUMPK) "$(INTDIR)"\
@@ -705,9 +705,2 @@ DEP_CPP_PUMPK=\
705 705
706DEP_CPP_PUMPK=\
707 ".\pumpkin.h"\
708 ".\PumpKINDlg.h"\
709 ".\shared-code\BellsNWhistles.h"\
710 ".\shared-code\kHelpers.h"\
711 ".\stdafx.h"\
712
713 706
@@ -722,9 +715,2 @@ DEP_CPP_PUMPK=\
722 715
723DEP_CPP_PUMPK=\
724 ".\pumpkin.h"\
725 ".\PumpKINDlg.h"\
726 ".\shared-code\BellsNWhistles.h"\
727 ".\shared-code\kHelpers.h"\
728 ".\stdafx.h"\
729
730 716
@@ -741,2 +727,5 @@ DEP_CPP_PUMPK=\
741SOURCE=.\PumpKINDlg.cpp 727SOURCE=.\PumpKINDlg.cpp
728
729!IF "$(CFG)" == "PumpKIN - Win32 Release"
730
742DEP_CPP_PUMPKI=\ 731DEP_CPP_PUMPKI=\
@@ -760,5 +749,2 @@ DEP_CPP_PUMPKI=\
760 749
761!IF "$(CFG)" == "PumpKIN - Win32 Release"
762
763
764"$(INTDIR)\PumpKINDlg.obj" : $(SOURCE) $(DEP_CPP_PUMPKI) "$(INTDIR)"\ 750"$(INTDIR)\PumpKINDlg.obj" : $(SOURCE) $(DEP_CPP_PUMPKI) "$(INTDIR)"\
@@ -769,2 +755,22 @@ DEP_CPP_PUMPKI=\
769 755
756DEP_CPP_PUMPKI=\
757 ".\ACLTargetCombo.h"\
758 ".\ConfirmRRQDlg.h"\
759 ".\ConfirmWRQDlg.h"\
760 ".\PropsACL.h"\
761 ".\PropsNetwork.h"\
762 ".\PropsServer.h"\
763 ".\PropsSounds.h"\
764 ".\pumpkin.h"\
765 ".\PumpKINDlg.h"\
766 ".\RequestDlg.h"\
767 ".\Resolver.h"\
768 ".\Retrier.h"\
769 ".\shared-code\kHelpers.h"\
770 ".\stdafx.h"\
771 ".\Trayer.h"\
772
773NODEP_CPP_PUMPKI=\
774 ".\DoSelect"\
775
770 776
@@ -779,2 +785,20 @@ DEP_CPP_PUMPKI=\
779 785
786DEP_CPP_PUMPKI=\
787 ".\ACLTargetCombo.h"\
788 ".\ConfirmRRQDlg.h"\
789 ".\ConfirmWRQDlg.h"\
790 ".\PropsACL.h"\
791 ".\PropsNetwork.h"\
792 ".\PropsServer.h"\
793 ".\PropsSounds.h"\
794 ".\pumpkin.h"\
795 ".\PumpKINDlg.h"\
796 ".\RequestDlg.h"\
797 ".\Resolver.h"\
798 ".\Retrier.h"\
799 ".\shared-code\BellsNWhistles.h"\
800 ".\shared-code\kHelpers.h"\
801 ".\stdafx.h"\
802 ".\Trayer.h"\
803
780 804
@@ -988,5 +1012,2 @@ BuildCmds= \
988SOURCE=.\PropsServer.cpp 1012SOURCE=.\PropsServer.cpp
989
990!IF "$(CFG)" == "PumpKIN - Win32 Release"
991
992DEP_CPP_PROPS=\ 1013DEP_CPP_PROPS=\
@@ -999,2 +1020,5 @@ DEP_CPP_PROPS=\
999 1020
1021!IF "$(CFG)" == "PumpKIN - Win32 Release"
1022
1023
1000"$(INTDIR)\PropsServer.obj" : $(SOURCE) $(DEP_CPP_PROPS) "$(INTDIR)"\ 1024"$(INTDIR)\PropsServer.obj" : $(SOURCE) $(DEP_CPP_PROPS) "$(INTDIR)"\
@@ -1005,9 +1029,2 @@ DEP_CPP_PROPS=\
1005 1029
1006DEP_CPP_PROPS=\
1007 ".\PropsServer.h"\
1008 ".\pumpkin.h"\
1009 ".\shared-code\BellsNWhistles.h"\
1010 ".\shared-code\kHelpers.h"\
1011 ".\stdafx.h"\
1012
1013 1030
@@ -1022,9 +1039,2 @@ DEP_CPP_PROPS=\
1022 1039
1023DEP_CPP_PROPS=\
1024 ".\PropsServer.h"\
1025 ".\pumpkin.h"\
1026 ".\shared-code\BellsNWhistles.h"\
1027 ".\shared-code\kHelpers.h"\
1028 ".\stdafx.h"\
1029
1030 1040
@@ -1080,5 +1090,2 @@ DEP_CPP_PROPSN=\
1080SOURCE=.\ConfirmRRQDlg.cpp 1090SOURCE=.\ConfirmRRQDlg.cpp
1081
1082!IF "$(CFG)" == "PumpKIN - Win32 Release"
1083
1084DEP_CPP_CONFI=\ 1091DEP_CPP_CONFI=\
@@ -1092,2 +1099,5 @@ DEP_CPP_CONFI=\
1092 1099
1100!IF "$(CFG)" == "PumpKIN - Win32 Release"
1101
1102
1093"$(INTDIR)\ConfirmRRQDlg.obj" : $(SOURCE) $(DEP_CPP_CONFI) "$(INTDIR)"\ 1103"$(INTDIR)\ConfirmRRQDlg.obj" : $(SOURCE) $(DEP_CPP_CONFI) "$(INTDIR)"\
@@ -1098,10 +1108,2 @@ DEP_CPP_CONFI=\
1098 1108
1099DEP_CPP_CONFI=\
1100 ".\ConfirmRRQDlg.h"\
1101 ".\pumpkin.h"\
1102 ".\PumpKINDlg.h"\
1103 ".\shared-code\BellsNWhistles.h"\
1104 ".\shared-code\kHelpers.h"\
1105 ".\stdafx.h"\
1106
1107 1109
@@ -1116,10 +1118,2 @@ DEP_CPP_CONFI=\
1116 1118
1117DEP_CPP_CONFI=\
1118 ".\ConfirmRRQDlg.h"\
1119 ".\pumpkin.h"\
1120 ".\PumpKINDlg.h"\
1121 ".\shared-code\BellsNWhistles.h"\
1122 ".\shared-code\kHelpers.h"\
1123 ".\stdafx.h"\
1124
1125 1119
@@ -1136,5 +1130,2 @@ DEP_CPP_CONFI=\
1136SOURCE=.\ConfirmWRQDlg.cpp 1130SOURCE=.\ConfirmWRQDlg.cpp
1137
1138!IF "$(CFG)" == "PumpKIN - Win32 Release"
1139
1140DEP_CPP_CONFIR=\ 1131DEP_CPP_CONFIR=\
@@ -1148,2 +1139,5 @@ DEP_CPP_CONFIR=\
1148 1139
1140!IF "$(CFG)" == "PumpKIN - Win32 Release"
1141
1142
1149"$(INTDIR)\ConfirmWRQDlg.obj" : $(SOURCE) $(DEP_CPP_CONFIR) "$(INTDIR)"\ 1143"$(INTDIR)\ConfirmWRQDlg.obj" : $(SOURCE) $(DEP_CPP_CONFIR) "$(INTDIR)"\
@@ -1154,10 +1148,2 @@ DEP_CPP_CONFIR=\
1154 1148
1155DEP_CPP_CONFIR=\
1156 ".\ConfirmWRQDlg.h"\
1157 ".\pumpkin.h"\
1158 ".\PumpKINDlg.h"\
1159 ".\shared-code\BellsNWhistles.h"\
1160 ".\shared-code\kHelpers.h"\
1161 ".\stdafx.h"\
1162
1163 1149
@@ -1172,10 +1158,2 @@ DEP_CPP_CONFIR=\
1172 1158
1173DEP_CPP_CONFIR=\
1174 ".\ConfirmWRQDlg.h"\
1175 ".\pumpkin.h"\
1176 ".\PumpKINDlg.h"\
1177 ".\shared-code\BellsNWhistles.h"\
1178 ".\shared-code\kHelpers.h"\
1179 ".\stdafx.h"\
1180
1181 1159
@@ -1231,5 +1209,2 @@ DEP_CPP_REQUE=\
1231SOURCE=.\Resolver.cpp 1209SOURCE=.\Resolver.cpp
1232
1233!IF "$(CFG)" == "PumpKIN - Win32 Release"
1234
1235DEP_CPP_RESOL=\ 1210DEP_CPP_RESOL=\
@@ -1243,2 +1218,5 @@ DEP_CPP_RESOL=\
1243 1218
1219!IF "$(CFG)" == "PumpKIN - Win32 Release"
1220
1221
1244"$(INTDIR)\Resolver.obj" : $(SOURCE) $(DEP_CPP_RESOL) "$(INTDIR)"\ 1222"$(INTDIR)\Resolver.obj" : $(SOURCE) $(DEP_CPP_RESOL) "$(INTDIR)"\
@@ -1249,10 +1227,2 @@ DEP_CPP_RESOL=\
1249 1227
1250DEP_CPP_RESOL=\
1251 ".\pumpkin.h"\
1252 ".\PumpKINDlg.h"\
1253 ".\Resolver.h"\
1254 ".\shared-code\BellsNWhistles.h"\
1255 ".\shared-code\kHelpers.h"\
1256 ".\stdafx.h"\
1257
1258 1228
@@ -1267,10 +1237,2 @@ DEP_CPP_RESOL=\
1267 1237
1268DEP_CPP_RESOL=\
1269 ".\pumpkin.h"\
1270 ".\PumpKINDlg.h"\
1271 ".\Resolver.h"\
1272 ".\shared-code\BellsNWhistles.h"\
1273 ".\shared-code\kHelpers.h"\
1274 ".\stdafx.h"\
1275
1276 1238
@@ -1287,5 +1249,2 @@ DEP_CPP_RESOL=\
1287SOURCE=.\Retrier.cpp 1249SOURCE=.\Retrier.cpp
1288
1289!IF "$(CFG)" == "PumpKIN - Win32 Release"
1290
1291DEP_CPP_RETRI=\ 1250DEP_CPP_RETRI=\
@@ -1299,2 +1258,5 @@ DEP_CPP_RETRI=\
1299 1258
1259!IF "$(CFG)" == "PumpKIN - Win32 Release"
1260
1261
1300"$(INTDIR)\Retrier.obj" : $(SOURCE) $(DEP_CPP_RETRI) "$(INTDIR)"\ 1262"$(INTDIR)\Retrier.obj" : $(SOURCE) $(DEP_CPP_RETRI) "$(INTDIR)"\
@@ -1305,10 +1267,2 @@ DEP_CPP_RETRI=\
1305 1267
1306DEP_CPP_RETRI=\
1307 ".\pumpkin.h"\
1308 ".\PumpKINDlg.h"\
1309 ".\Retrier.h"\
1310 ".\shared-code\BellsNWhistles.h"\
1311 ".\shared-code\kHelpers.h"\
1312 ".\stdafx.h"\
1313
1314 1268
@@ -1323,10 +1277,2 @@ DEP_CPP_RETRI=\
1323 1277
1324DEP_CPP_RETRI=\
1325 ".\pumpkin.h"\
1326 ".\PumpKINDlg.h"\
1327 ".\Retrier.h"\
1328 ".\shared-code\BellsNWhistles.h"\
1329 ".\shared-code\kHelpers.h"\
1330 ".\stdafx.h"\
1331
1332 1278
@@ -1343,5 +1289,2 @@ DEP_CPP_RETRI=\
1343SOURCE=.\Trayer.cpp 1289SOURCE=.\Trayer.cpp
1344
1345!IF "$(CFG)" == "PumpKIN - Win32 Release"
1346
1347DEP_CPP_TRAYE=\ 1290DEP_CPP_TRAYE=\
@@ -1355,2 +1298,5 @@ DEP_CPP_TRAYE=\
1355 1298
1299!IF "$(CFG)" == "PumpKIN - Win32 Release"
1300
1301
1356"$(INTDIR)\Trayer.obj" : $(SOURCE) $(DEP_CPP_TRAYE) "$(INTDIR)"\ 1302"$(INTDIR)\Trayer.obj" : $(SOURCE) $(DEP_CPP_TRAYE) "$(INTDIR)"\
@@ -1361,10 +1307,2 @@ DEP_CPP_TRAYE=\
1361 1307
1362DEP_CPP_TRAYE=\
1363 ".\pumpkin.h"\
1364 ".\PumpKINDlg.h"\
1365 ".\shared-code\BellsNWhistles.h"\
1366 ".\shared-code\kHelpers.h"\
1367 ".\stdafx.h"\
1368 ".\Trayer.h"\
1369
1370 1308
@@ -1379,10 +1317,2 @@ DEP_CPP_TRAYE=\
1379 1317
1380DEP_CPP_TRAYE=\
1381 ".\pumpkin.h"\
1382 ".\PumpKINDlg.h"\
1383 ".\shared-code\BellsNWhistles.h"\
1384 ".\shared-code\kHelpers.h"\
1385 ".\stdafx.h"\
1386 ".\Trayer.h"\
1387
1388 1318
@@ -1419,5 +1349,2 @@ SOURCE=.\help\pumpkin.cnt
1419SOURCE=.\PropsSounds.cpp 1349SOURCE=.\PropsSounds.cpp
1420
1421!IF "$(CFG)" == "PumpKIN - Win32 Release"
1422
1423DEP_CPP_PROPSS=\ 1350DEP_CPP_PROPSS=\
@@ -1431,2 +1358,5 @@ DEP_CPP_PROPSS=\
1431 1358
1359!IF "$(CFG)" == "PumpKIN - Win32 Release"
1360
1361
1432"$(INTDIR)\PropsSounds.obj" : $(SOURCE) $(DEP_CPP_PROPSS) "$(INTDIR)"\ 1362"$(INTDIR)\PropsSounds.obj" : $(SOURCE) $(DEP_CPP_PROPSS) "$(INTDIR)"\
@@ -1437,10 +1367,2 @@ DEP_CPP_PROPSS=\
1437 1367
1438DEP_CPP_PROPSS=\
1439 ".\PropsSounds.h"\
1440 ".\pumpkin.h"\
1441 ".\PumpKINDlg.h"\
1442 ".\shared-code\BellsNWhistles.h"\
1443 ".\shared-code\kHelpers.h"\
1444 ".\stdafx.h"\
1445
1446 1368
@@ -1455,10 +1377,2 @@ DEP_CPP_PROPSS=\
1455 1377
1456DEP_CPP_PROPSS=\
1457 ".\PropsSounds.h"\
1458 ".\pumpkin.h"\
1459 ".\PumpKINDlg.h"\
1460 ".\shared-code\BellsNWhistles.h"\
1461 ".\shared-code\kHelpers.h"\
1462 ".\stdafx.h"\
1463
1464 1378
@@ -1516,5 +1430,2 @@ DEP_CPP_PROPSA=\
1516SOURCE=.\ACLTargetCombo.cpp 1430SOURCE=.\ACLTargetCombo.cpp
1517
1518!IF "$(CFG)" == "PumpKIN - Win32 Release"
1519
1520DEP_CPP_ACLTA=\ 1431DEP_CPP_ACLTA=\
@@ -1528,2 +1439,5 @@ DEP_CPP_ACLTA=\
1528 1439
1440!IF "$(CFG)" == "PumpKIN - Win32 Release"
1441
1442
1529"$(INTDIR)\ACLTargetCombo.obj" : $(SOURCE) $(DEP_CPP_ACLTA) "$(INTDIR)"\ 1443"$(INTDIR)\ACLTargetCombo.obj" : $(SOURCE) $(DEP_CPP_ACLTA) "$(INTDIR)"\
@@ -1534,10 +1448,2 @@ DEP_CPP_ACLTA=\
1534 1448
1535DEP_CPP_ACLTA=\
1536 ".\ACLTargetCombo.h"\
1537 ".\pumpkin.h"\
1538 ".\PumpKINDlg.h"\
1539 ".\shared-code\BellsNWhistles.h"\
1540 ".\shared-code\kHelpers.h"\
1541 ".\stdafx.h"\
1542
1543 1449
@@ -1552,10 +1458,2 @@ DEP_CPP_ACLTA=\
1552 1458
1553DEP_CPP_ACLTA=\
1554 ".\ACLTargetCombo.h"\
1555 ".\pumpkin.h"\
1556 ".\PumpKINDlg.h"\
1557 ".\shared-code\BellsNWhistles.h"\
1558 ".\shared-code\kHelpers.h"\
1559 ".\stdafx.h"\
1560
1561 1459