author | Michael Krelin <hacker@klever.net> | 2006-07-02 22:16:25 (UTC) |
---|---|---|
committer | Michael Krelin <hacker@klever.net> | 2006-07-02 22:16:25 (UTC) |
commit | 577427e68ef10a4d2b75d28e42b22952ae3bcf23 (patch) (unidiff) | |
tree | 24c8fc94ea6524059cab7927ef76639bb1a1a98d /PumpKINDlg.h | |
parent | 24e693797daef020ece3fa19bb5acce000e37165 (diff) | |
download | pumpkin-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
-rw-r--r-- | PumpKINDlg.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/PumpKINDlg.h b/PumpKINDlg.h index c5469f1..23c2657 100644 --- a/PumpKINDlg.h +++ b/PumpKINDlg.h | |||
@@ -291,77 +291,78 @@ public: | |||
291 | virtual void Abort(); | 291 | virtual void Abort(); |
292 | void ResetTimeout(); | 292 | void ResetTimeout(); |
293 | enum{ | 293 | enum{ |
294 | stateNone, stateDeny, stateInit, stateOACK, stateXfer, stateFinish, stateClosing | 294 | stateNone, stateDeny, stateInit, stateOACK, stateXfer, stateFinish, stateClosing |
295 | }; | 295 | }; |
296 | int state; | 296 | int state; |
297 | void Deny(UINT errCode,UINT errID); | 297 | void Deny(UINT errCode,UINT errID); |
298 | void Deny(CFileException* e); | 298 | void Deny(CFileException* e); |
299 | CString ApplyRoot(LPCTSTR fileName); | 299 | CString ApplyRoot(LPCTSTR fileName); |
300 | void TurnSlashes(CString& fn,BOOL bBack=TRUE); | 300 | void TurnSlashes(CString& fn,BOOL bBack=TRUE); |
301 | virtual void Destroy(BOOL success=TRUE); | 301 | virtual void Destroy(BOOL success=TRUE); |
302 | void PostError(CFileException* e); | 302 | void PostError(CFileException* e); |
303 | void PostError(UINT errCode,UINT errID); | 303 | void PostError(UINT errCode,UINT errID); |
304 | void PostTFTP(tftp* p,BOOL retryable=FALSE); | 304 | void PostTFTP(tftp* p,BOOL retryable=FALSE); |
305 | CXferSocket(CPumpKINDlg *daddy,LPCTSTR fileName,LPCTSTR type,SOCKADDR_IN* sin); | 305 | CXferSocket(CPumpKINDlg *daddy,LPCTSTR fileName,LPCTSTR type,SOCKADDR_IN* sin); |
306 | CFile m_File; | 306 | CFile m_File; |
307 | virtual ULONG GetACK(); | 307 | virtual ULONG GetACK(); |
308 | CString m_Type; | 308 | CString m_Type; |
309 | CString m_FileName; | 309 | CString m_FileName; |
310 | CXferSocket(); | 310 | CXferSocket(); |
311 | void UpdateList(); | 311 | void UpdateList(); |
312 | void SetPeer(SOCKADDR_IN *sin); | 312 | void SetPeer(SOCKADDR_IN *sin); |
313 | virtual BOOL OnTFTP(tftp* p) = 0; | 313 | virtual BOOL OnTFTP(tftp* p) = 0; |
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; |
317 | virtual void OnSend(int nErrorCode); | 317 | virtual void OnSend(int nErrorCode); |
318 | CPumpKINDlg* m_Daddy; | 318 | CPumpKINDlg* m_Daddy; |
319 | CTFTPList m_Queue; | 319 | CTFTPList m_Queue; |
320 | 320 | ||
321 | DECLARE_DYNAMIC(CXferSocket) | 321 | DECLARE_DYNAMIC(CXferSocket) |
322 | }; | 322 | }; |
323 | class CWRQSocket : public CXferSocket { | 323 | class CWRQSocket : public CXferSocket { |
324 | public: | 324 | public: |
325 | BOOL m_bResume; | 325 | BOOL m_bResume; |
326 | void OnHostKnown(); | 326 | void OnHostKnown(); |
327 | virtual void OnResolved(); | 327 | virtual void OnResolved(); |
328 | UINT m_LastSlack; | 328 | UINT m_LastSlack; |
329 | ULONG GetACK(); | 329 | ULONG GetACK(); |
330 | void DoXfer(); | 330 | void DoXfer(); |
331 | UINT m_ACK; | 331 | UINT m_ACK; |
332 | BOOL SaveAs(CString& fn); | 332 | BOOL SaveAs(CString& fn); |
333 | BOOL RenameFile(CString& fn); | 333 | BOOL RenameFile(CString& fn); |
334 | BOOL m_Rename; | 334 | BOOL m_Rename; |
335 | BOOL ConfirmRequest(); | 335 | BOOL ConfirmRequest(); |
336 | BOOL Create(LPCTSTR localFile=NULL,LPCTSTR hostName=NULL); | 336 | BOOL Create(LPCTSTR localFile=NULL,LPCTSTR hostName=NULL); |
337 | CWRQSocket(CPumpKINDlg* daddy,LPCTSTR fileName,LPCTSTR type,SOCKADDR_IN *sin); | 337 | CWRQSocket(CPumpKINDlg* daddy,LPCTSTR fileName,LPCTSTR type,SOCKADDR_IN *sin); |
338 | BOOL OnTFTP(tftp* p); | 338 | BOOL OnTFTP(tftp* p); |
339 | 339 | ||
340 | DECLARE_DYNAMIC(CWRQSocket) | 340 | DECLARE_DYNAMIC(CWRQSocket) |
341 | }; | 341 | }; |
342 | class CRRQSocket : public CXferSocket { | 342 | class CRRQSocket : public CXferSocket { |
343 | public: | 343 | public: |
344 | UINT m_ACKtoClose; | ||
344 | void OnHostKnown(); | 345 | void OnHostKnown(); |
345 | virtual void OnResolved(); | 346 | virtual void OnResolved(); |
346 | BOOL ConfirmRequest(); | 347 | BOOL ConfirmRequest(); |
347 | WORD m_LastSlack; | 348 | WORD m_LastSlack; |
348 | UINT m_ACK; | 349 | UINT m_ACK; |
349 | BOOL OnTFTP(tftp* p); | 350 | BOOL OnTFTP(tftp* p); |
350 | ULONG GetACK(void); | 351 | ULONG GetACK(void); |
351 | void DoXfer(); | 352 | void DoXfer(); |
352 | CRRQSocket(CPumpKINDlg *daddy,LPCTSTR fileName,LPCTSTR type,SOCKADDR_IN *sin); | 353 | CRRQSocket(CPumpKINDlg *daddy,LPCTSTR fileName,LPCTSTR type,SOCKADDR_IN *sin); |
353 | BOOL Create(LPCTSTR localFile=NULL,LPCTSTR hostName=NULL); | 354 | BOOL Create(LPCTSTR localFile=NULL,LPCTSTR hostName=NULL); |
354 | 355 | ||
355 | DECLARE_DYNAMIC(CRRQSocket) | 356 | DECLARE_DYNAMIC(CRRQSocket) |
356 | }; | 357 | }; |
357 | 358 | ||
358 | typedef CMap<SOCKET,SOCKET,CXferSocket*,CXferSocket*>CTIDMap; | 359 | typedef CMap<SOCKET,SOCKET,CXferSocket*,CXferSocket*>CTIDMap; |
359 | typedef CMap<CTime*,CTime*,CTime*,CTime*> CTimeMap; | 360 | typedef CMap<CTime*,CTime*,CTime*,CTime*> CTimeMap; |
360 | 361 | ||
361 | ///////////////////////////////////////////////////////////////////////////// | 362 | ///////////////////////////////////////////////////////////////////////////// |
362 | // CPumpKINDlg dialog | 363 | // CPumpKINDlg dialog |
363 | 364 | ||
364 | class CTrayer; | 365 | class CTrayer; |
365 | class CRetrier; | 366 | class CRetrier; |
366 | class CPumpKINDlg : public CDialog | 367 | class CPumpKINDlg : public CDialog |
367 | { | 368 | { |