unrecognized op\n");
}
diff --git a/client/scheduler_op.C b/client/scheduler_op.C
index 3404dd080e..8b92c090bf 100644
--- a/client/scheduler_op.C
+++ b/client/scheduler_op.C
@@ -63,7 +63,7 @@ bool SCHEDULER_OP::check_master_fetch_start() {
"Couldn't start master page download: %s", boincerror(retval)
);
if (p->tentative) {
- p->attach_failed(ATTACH_FAIL_INIT);
+ p->attach_failed(ERR_ATTACH_FAIL_INIT);
} else {
p->master_fetch_failures++;
backoff(p, "Master page fetch failed\n");
@@ -183,7 +183,7 @@ void SCHEDULER_OP::backoff(PROJECT* p, const char *error_msg ) {
msg_printf(p, MSG_ERROR, error_msg);
if (p->tentative) {
- p->attach_failed(ATTACH_FAIL_INIT);
+ p->attach_failed(ERR_ATTACH_FAIL_INIT);
return;
}
@@ -388,7 +388,7 @@ bool SCHEDULER_OP::poll() {
if (cur_proj->tentative) {
PROJECT* project_temp = cur_proj;
cur_proj = 0; // keep detach(0) from removing HTTP OP
- project_temp->attach_failed(ATTACH_FAIL_PARSE);
+ project_temp->attach_failed(ERR_ATTACH_FAIL_PARSE);
err = true;
} else {
cur_proj->master_fetch_failures++;
@@ -414,7 +414,7 @@ bool SCHEDULER_OP::poll() {
if (cur_proj->tentative) {
PROJECT* project_temp = cur_proj;
cur_proj = 0;
- project_temp->attach_failed(ATTACH_FAIL_DOWNLOAD);
+ project_temp->attach_failed(ERR_ATTACH_FAIL_DOWNLOAD);
} else {
cur_proj->master_fetch_failures++;
backoff(cur_proj, "Master file fetch failed\n");
@@ -469,15 +469,17 @@ bool SCHEDULER_OP::poll() {
//
if (cur_proj->tentative) {
if (retval || strlen(cur_proj->user_name)==0) {
- cur_proj->attach_failed(ATTACH_FAIL_BAD_KEY);
+ cur_proj->attach_failed(ERR_ATTACH_FAIL_BAD_KEY);
} else {
cur_proj->tentative = false;
retval = cur_proj->write_account_file();
if (retval) {
- cur_proj->attach_failed(ATTACH_FAIL_FILE_WRITE);
- } else if (cur_proj->show_alerts) {
- msg_printf(cur_proj, MSG_ALERT_INFO,
- "Successfully attached to %s", cur_proj->get_project_name()
+ cur_proj->attach_failed(ERR_ATTACH_FAIL_FILE_WRITE);
+ } else {
+ gstate.project_attach.error_num = 0;
+ msg_printf(cur_proj, MSG_INFO,
+ "Successfully attached to %s",
+ cur_proj->get_project_name()
);
}
}
diff --git a/doc/boinc_news.inc b/doc/boinc_news.inc
index 470d058f10..ac22465749 100644
--- a/doc/boinc_news.inc
+++ b/doc/boinc_news.inc
@@ -2,6 +2,12 @@
$project_news = array(
+array("August 9, 2005",
+ "BOINC is transitioning to use libcurl
+ for HTTP operations.
+ This will allow BOINC to use HTTPS (secure HTTP)
+ for scheduler requests and file transfers."
+),
array("August 3, 2005",
"Non-open-source code (RSAEuro and GLUT) has been removed from BOINC.
OpenSSL's crypto library is used for encryption."
diff --git a/doc/files.php b/doc/files.php
index 7a922a3f11..fa434417c5 100644
--- a/doc/files.php
+++ b/doc/files.php
@@ -71,7 +71,7 @@ list_item("executable",
);
list_item("upload_when_present",
"If present, indicates that the file should be uploaded
- when the application that generates it exits.
+ when the application finishes.
");
list_item("sticky",
"If present, indicates that the file should be retained
diff --git a/doc/index.php b/doc/index.php
index bcafe20b1f..1820371cfd 100644
--- a/doc/index.php
+++ b/doc/index.php
@@ -60,11 +60,12 @@ computer resources
2) Download and run BOINC software.
- You can participate in any or all projects -- the choice is up to you.
- You control the percentage of your computing power
+ You can participate in any or all projects,
+ and you control the percentage of your computing power
that goes to each project.
- If you participate in several projects,
- your computer will be busy even when one project has no work.
+ By participating in several projects,
+ you ensure that your computer will be kept busy
+ even when one project has no work.
... more
diff --git a/lib/error_numbers.h b/lib/error_numbers.h
index ee243e7f84..de038acc82 100755
--- a/lib/error_numbers.h
+++ b/lib/error_numbers.h
@@ -156,6 +156,12 @@
#define ERR_BAD_PASSWD -206
#define ERR_NONUNIQUE_EMAIL -207
#define ERR_ACCT_CREATION_DISABLED -208
+#define ERR_ATTACH_FAIL_INIT -209
+#define ERR_ATTACH_FAIL_DOWNLOAD -210
+#define ERR_ATTACH_FAIL_PARSE -211
+#define ERR_ATTACH_FAIL_BAD_KEY -212
+#define ERR_ATTACH_FAIL_FILE_WRITE -213
+
// PLEASE: add a text description of your error to
// the text description function boincerror() in util.C.
diff --git a/lib/gui_rpc_client.h b/lib/gui_rpc_client.h
index 7fb93adb51..c1a0842b46 100644
--- a/lib/gui_rpc_client.h
+++ b/lib/gui_rpc_client.h
@@ -564,6 +564,7 @@ public:
int create_account_poll(ACCOUNT_OUT&);
int lookup_website(int);
int lookup_website_poll();
+ int project_attach_poll();
};
struct RPC {
diff --git a/lib/gui_rpc_client_ops.C b/lib/gui_rpc_client_ops.C
index b487afee41..fc3c5fec10 100644
--- a/lib/gui_rpc_client_ops.C
+++ b/lib/gui_rpc_client_ops.C
@@ -1570,3 +1570,16 @@ int RPC_CLIENT::lookup_website_poll() {
return lw.parse(rpc.fin);
}
+int RPC_CLIENT::project_attach_poll() {
+ RPC rpc(this);
+ char buf[256];
+ int retval;
+
+ retval = rpc.do_rpc("\n");
+ if (retval) return retval;
+ retval = ERR_XML_PARSE;
+ if (rpc.fin.fgets(buf, 256)) {
+ parse_int(buf, "", retval);
+ }
+ return retval;
+}
diff --git a/lib/util.C b/lib/util.C
index a52d640f79..9d2f99c10a 100755
--- a/lib/util.C
+++ b/lib/util.C
@@ -954,6 +954,11 @@ const char* boincerror(int which_error) {
case ERR_USER_PERMISSION: return "user permission";
case ERR_SHMEM_NAME: return "can't get shared mem segment name";
case ERR_NO_NETWORK_CONNECTION: return "no available network connection";
+ case ERR_ATTACH_FAIL_INIT: return "Couldn't start master page download";
+ case ERR_ATTACH_FAIL_DOWNLOAD: return "Couldn't download master page";
+ case ERR_ATTACH_FAIL_PARSE: return "Couldn't parse master page";
+ case ERR_ATTACH_FAIL_BAD_KEY: return "Invalid account key";
+ case ERR_ATTACH_FAIL_FILE_WRITE: return "Couldn't write account file";
}
static char buf[64];
sprintf(buf, "error %d", which_error);