diff --git a/checkin_notes b/checkin_notes
index d69ad0fb03..55c59b07e4 100755
--- a/checkin_notes
+++ b/checkin_notes
@@ -7301,3 +7301,12 @@ David 16 July 2007
clientgui/
BOINCGridCtrl.cpp,h
ViewWorkGrid.cpp
+
+David 16 July 2007
+ - client: if can't write state file, don't immediately exit,
+ but don't do anything other than handle GUI RPCs.
+ After 50 secs, print an "about to exit" message.
+ After 60 seconds, exit
+
+ client/
+ client_state.C,h
diff --git a/client/client_state.C b/client/client_state.C
index 78b58b36e0..2850902e41 100644
--- a/client/client_state.C
+++ b/client/client_state.C
@@ -102,6 +102,7 @@ CLIENT_STATE::CLIENT_STATE() {
redirect_io = false;
disable_graphics = false;
work_fetch_no_new_work = false;
+ cant_write_state_file = false;
debt_interval_start = 0;
total_wall_cpu_time_this_debt_interval = 0;
@@ -247,7 +248,7 @@ int CLIENT_STATE::init() {
msg_printf(NULL, MSG_USER_ERROR,
"Make sure directory permissions are set correctly"
);
- return retval;
+ cant_write_state_file = true;
}
// scan user prefs; create file records
@@ -421,8 +422,8 @@ void CLIENT_STATE::do_io_or_sleep(double x) {
if (n==0) break;
- // Limit number of times thru this loop. Can get
- // stuck in while loop, if network isn't available,
+ // Limit number of times thru this loop.
+ // Can get stuck in while loop, if network isn't available,
// DNS lookups tend to eat CPU cycles.
//
if (loops++ > 99) {
@@ -459,6 +460,11 @@ bool CLIENT_STATE::poll_slow_events() {
#endif
now = dtime();
+
+ if (cant_write_state_file) {
+ return false;
+ }
+
if (now - old_now > POLL_INTERVAL*10) {
if (log_flags.network_status_debug) {
msg_printf(0, MSG_INFO,
@@ -1210,7 +1216,6 @@ bool CLIENT_STATE::update_results() {
// (timeout or idle)
//
bool CLIENT_STATE::time_to_exit() {
- if (!exit_when_idle && !exit_after_app_start_secs) return false;
if (exit_after_app_start_secs
&& (app_started>0)
&& ((now - app_started) >= exit_after_app_start_secs)
@@ -1224,6 +1229,22 @@ bool CLIENT_STATE::time_to_exit() {
msg_printf(NULL, MSG_INFO, "exiting because no more results");
return true;
}
+ if (cant_write_state_file) {
+ static bool first = true;
+ double t = now - last_wakeup_time;
+ if (first && t > 50) {
+ first = false;
+ msg_printf(NULL, MSG_INFO,
+ "Can't write state file, exiting in 10 seconds"
+ );
+ }
+ if (t > 60) {
+ msg_printf(NULL, MSG_INFO,
+ "Can't write state file, exiting now"
+ );
+ return true;
+ }
+ }
return false;
}
diff --git a/client/client_state.h b/client/client_state.h
index 671a879297..7302ac6fdb 100644
--- a/client/client_state.h
+++ b/client/client_state.h
@@ -161,7 +161,11 @@ public:
double now;
double last_wakeup_time;
bool initialized;
-
+ bool cant_write_state_file;
+ // failed to write state file.
+ // In this case we continue to run for 1 minute,
+ // handling GUI RPCs but doing nothing else,
+ // so that the Manager can tell the user what the problem is
private:
bool client_state_dirty;
int old_major_version;
diff --git a/doc/boinc_news.php b/doc/boinc_news.php
index 92909b84ce..ec51009fd6 100644
--- a/doc/boinc_news.php
+++ b/doc/boinc_news.php
@@ -1,6 +1,10 @@
$project_news = array(
+array("July 16, 2007",
+ "BOINC is now the preferred client software at
+ World Community Grid."
+),
array("July 12, 2007",
"Leiden Classical
is using BOINC for education - it provides a
diff --git a/doc/download_all.php b/doc/download_all.php
index 7a90876496..a2402576d2 100755
--- a/doc/download_all.php
+++ b/doc/download_all.php
@@ -51,7 +51,6 @@ function show_detail($v) {
dl_item("File (click to download)", "$dlink ($s MB)");
dl_item("Version number", $num);
dl_item("Release date", $date);
- dl_item("Installer type", $type);
//dl_item("MD5 checksum of download file", $md);
if ($features) {
dl_item ("New features", $features);
@@ -106,7 +105,7 @@ function show_version($pname, $i, $v) {
$status = $v["status"];
if (is_dev($v)) {
$status = $status."
-
+
(MAY BE UNSTABLE - USE ONLY FOR TESTING)
";
@@ -122,9 +121,6 @@ function show_version($pname, $i, $v) {
If your computer is not of one of these types, you can
The Windows BOINC client can be - deployed across a Windows network + deployed across a Windows network using Active Directory. "; } @@ -223,7 +219,7 @@ if ($xml) { Download information can be restricted by platform and/or version number, and can be obtained in XML format. - Details. + Details. "; page_tail(); }