From 26f425f0153de537bc676c9c38a68ef3edd882c5 Mon Sep 17 00:00:00 2001 From: Gluzskiy Alexandr Date: Fri, 27 Aug 2010 00:00:01 +0300 Subject: using threads, gpg execution timeout, fixed high cpu usage when waiting gpg process --- utilities.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'utilities.cpp') diff --git a/utilities.cpp b/utilities.cpp index 7d0b241..b07b7ba 100644 --- a/utilities.cpp +++ b/utilities.cpp @@ -410,10 +410,23 @@ static JABBER_HANDLER_FUNC SendHandler(IJabberInterface *ji, HXML node, void *pU cmd += _T(" --batch --yes -a -s \""); cmd += path_out; cmd += _T("\" "); - if(pxExecute(&cmd, "", &out, &code) == pxNotFound) + gpg_execution_params params; + pxResult result; + params.cmd = &cmd; + params.useless = ""; + params.out = &out; + params.code = &code; + params.result = &result; + HANDLE gpg_thread = mir_forkthread(pxEexcute_thread, (void*)¶ms); + if(WaitForSingleObject(gpg_thread, 10000) == WAIT_TIMEOUT) { + TerminateThread(gpg_thread, 0); + MessageBox(0, _T("GPG execution timed out, aborted"), _T(""), MB_OK); + } + if(result == pxNotFound) + { MessageBox(0, _T("Set path to gpg.exe first!"), _T("Warning"), MB_OK); - } + } DeleteFile(path_out.c_str()); path_out += _T(".asc"); f.open(path_out.c_str(), std::ios::in); -- cgit v1.2.3