summaryrefslogtreecommitdiff
path: root/utilities.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'utilities.cpp')
-rw-r--r--utilities.cpp52
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, &params));
- 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, &params));
- 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);
}
}