diff options
Diffstat (limited to 'utilities.cpp')
-rw-r--r-- | utilities.cpp | 52 |
1 files changed, 12 insertions, 40 deletions
diff --git a/utilities.cpp b/utilities.cpp index 70d59b9..8ebe6f0 100644 --- a/utilities.cpp +++ b/utilities.cpp @@ -270,15 +270,8 @@ int OnPreBuildContactMenu(WPARAM w, LPARAM l) return 0; } -struct file_in_transfer -{ - wstring file; - CCSDATA *thread; -}; - -list <file_in_transfer*> transfers; -boost::mutex filetransfer_mutex; //currently safe to use only one encrypted fletransfers at same time +list<wstring> transfers; int onProtoAck(WPARAM w, LPARAM l) { @@ -293,41 +286,18 @@ int onProtoAck(WPARAM w, LPARAM l) switch(ack->result)
{
case ACKRESULT_DENIED: case ACKRESULT_FAILED:
- {
- TCHAR *temp = _wgetenv(_T("TEMP"));
- if(f->tszCurrentFile && _tcsstr(f->tszCurrentFile, temp))
- {
- if(!transfers.empty())
- {
- for(list<file_in_transfer*>::iterator i = transfers.begin(); i != transfers.end(); i++) //bad solution
- DeleteFile((*i)->file.c_str());
- transfers.clear();
- filetransfer_mutex.unlock();
- }
- }
- return 0;
- }
break;
case ACKRESULT_SUCCESS:
{
TCHAR *temp = _wgetenv(_T("TEMP"));
if(f->tszCurrentFile && _tcsstr(f->tszCurrentFile, temp))
- {
- if(!transfers.empty())
- {
- for(list<file_in_transfer*>::iterator i = transfers.begin(); i != transfers.end(); i++) //bad solution
- DeleteFile((*i)->file.c_str());
- transfers.clear();
- filetransfer_mutex.unlock();
- }
- return 0;
- }
+ break;
else if(f->tszCurrentFile && _tcsstr(f->tszCurrentFile, _T(".gpg"))) //decrypt it
{ //process encrypted file
if(_waccess(f->tszCurrentFile, 0) == -1) { if(errno == ENOENT) - return 0; + break; } string out; DWORD code; @@ -336,6 +306,12 @@ int onProtoAck(WPARAM w, LPARAM l) wstring file = f->tszCurrentFile; wstring::size_type p1 = file.find(_T(".gpg")); file.erase(p1, _tcslen(_T(".gpg"))); + if(_waccess(file.c_str(), 0) != -1) + { + if(MessageBox(0, _T("Target file exists, do you want to replace it ?"), _T("Warning"), MB_YESNO) == IDNO) + break; + } + DeleteFile(file.c_str()); file.insert(0, _T("\"")); file.insert(file.length(), _T("\" ")); cmd += file; @@ -349,7 +325,7 @@ int onProtoAck(WPARAM w, LPARAM l) params.code = &code; params.result = &result; boost::thread *gpg_thread = new boost::thread(boost::bind(&pxEexcute_thread, ¶ms)); - if(!gpg_thread->timed_join(boost::posix_time::seconds(10))) + if(!gpg_thread->timed_join(boost::posix_time::minutes(10))) { delete gpg_thread; MessageBox(0, _T("GPG execution timed out, aborted"), _T(""), MB_OK); @@ -373,7 +349,6 @@ int onSendFile(WPARAM w, LPARAM l) CCSDATA *ccs=(CCSDATA*)l; if(isContactSecured(ccs->hContact)) { - filetransfer_mutex.lock(); TCHAR **file=(TCHAR **)ccs->lParam; int i; for(i = 0; file[i]; i++) @@ -417,7 +392,7 @@ int onSendFile(WPARAM w, LPARAM l) params.code = &code; params.result = &result; boost::thread *gpg_thread = new boost::thread(boost::bind(&pxEexcute_thread, ¶ms)); - if(!gpg_thread->timed_join(boost::posix_time::seconds(10))) + if(!gpg_thread->timed_join(boost::posix_time::minutes(10))) { delete gpg_thread; MessageBox(0, _T("GPG execution timed out, aborted"), _T(""), MB_OK); @@ -429,10 +404,7 @@ int onSendFile(WPARAM w, LPARAM l) mir_free(file[i]);
file[i]=mir_wstrdup(path_out.c_str());
mir_free(file_out);
- file_in_transfer *file_transfer = new file_in_transfer;
- file_transfer->file = path_out;
- file_transfer->thread = ccs;
- transfers.push_back(file_transfer);
+ transfers.push_back(path_out);
} } |