[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[vidalia-svn] r3127: Add some code for killing processes on Windows, and an error (in vidalia/trunk/src: common vidalia)
Author: edmanm
Date: 2008-09-21 18:09:00 -0400 (Sun, 21 Sep 2008)
New Revision: 3127
Modified:
vidalia/trunk/src/common/procutil.cpp
vidalia/trunk/src/common/procutil.h
vidalia/trunk/src/vidalia/mainwindow.cpp
Log:
Add some code for killing processes on Windows, and an error message if the Reset button fails to do its thing.
Modified: vidalia/trunk/src/common/procutil.cpp
===================================================================
--- vidalia/trunk/src/common/procutil.cpp 2008-09-21 21:23:50 UTC (rev 3126)
+++ vidalia/trunk/src/common/procutil.cpp 2008-09-21 22:09:00 UTC (rev 3127)
@@ -115,10 +115,18 @@
}
bool
-process_kill(qint64 pid, QString *errmsg)
+process_kill(qint64 pid)
{
#if defined(Q_OS_WIN32)
- return false;
+ HANDLE hProcess = OpenProcess(PROCESS_TERMINATE, FALSE,
+ static_cast<DWORD>(pid));
+ if (hProcess == NULL)
+ return false;
+
+ BOOL ret = TerminateProcess(hProcess, 0);
+ CloseHandle(hProcess);
+
+ return (ret != FALSE);
#else
return false;
#endif
Modified: vidalia/trunk/src/common/procutil.h
===================================================================
--- vidalia/trunk/src/common/procutil.h 2008-09-21 21:23:50 UTC (rev 3126)
+++ vidalia/trunk/src/common/procutil.h 2008-09-21 22:09:00 UTC (rev 3127)
@@ -47,9 +47,8 @@
QHash<qint64, QString> process_list();
/** Attempt to kill process <b>pid</b>. Return true if the specified process
- * was successfully terminated. Otherwise, return false and set <b>errmsg</b>
- * to a string description of the failure. */
-bool process_kill(qint64 pid, QString *errmsg = 0);
+ * was successfully terminated. Otherwise, return false. */
+bool process_kill(qint64 pid);
#endif
Modified: vidalia/trunk/src/vidalia/mainwindow.cpp
===================================================================
--- vidalia/trunk/src/vidalia/mainwindow.cpp 2008-09-21 21:23:50 UTC (rev 3126)
+++ vidalia/trunk/src/vidalia/mainwindow.cpp 2008-09-21 22:09:00 UTC (rev 3127)
@@ -1161,7 +1161,7 @@
#if defined(Q_OS_WIN32)
QHash<qint64, QString> procs = process_list();
- foreach (qint64 pid, procs) {
+ foreach (qint64 pid, procs.keys()) {
if (! procs.value(pid).compare("tor.exe", Qt::CaseInsensitive)) {
torPid = pid;
break;
@@ -1186,9 +1186,13 @@
}
retry = true;
} else if (ret == QDialogButtonBox::Reset) {
- QString processError;
- if (! process_kill(torPid, &processError)) {
- /* TODO: Display a helpful error message. */
+ if (! process_kill(torPid)) {
+ VMessageBox::warning(this,
+ tr("Password Reset Failed"),
+ p(tr("Vidalia tried to reset Tor's control password, but was not "
+ "able to restart the Tor software. Please check your Task "
+ "Manager to ensure there are no other Tor processes running.")),
+ VMessageBox::Ok|VMessageBox::Default);
} else {
retry = true;
}