- scheduler: add <no_vista_sandbox> option.

If set, don't send work to sandboxed Vista clients
    (e.g., because of CUDA issue)

svn path=/trunk/boinc/; revision=16105
This commit is contained in:
David Anderson 2008-10-01 19:48:52 +00:00
parent 5a2a48caa9
commit bb9d546a02
6 changed files with 43 additions and 1 deletions

View File

@ -7910,3 +7910,13 @@ Charlie 30 Sep 2008
setupForBOINC.sh
boinc.xcodeproj/
project.pbxproj
David 1 Oct 2008
- scheduler: add <no_vista_sandbox> option.
If set, don't send work to sandboxed Vista clients
(e.g., because of CUDA issue)
sched/
handle_request.cpp
sched_config.cpp,h
server_types.cpp,h

View File

@ -1160,6 +1160,27 @@ static void log_request(SCHEDULER_REQUEST& sreq, SCHEDULER_REPLY& reply) {
log_messages.set_indent_level(2);
}
bool bad_install_type(SCHEDULER_REQUEST& sreq, SCHEDULER_REPLY& reply) {
if (config.no_vista_sandbox) {
if (!strcmp(sreq.host.os_name, "Microsoft Windows Vista")) {
if (sreq.sandbox == 1) {
log_messages.printf(MSG_INFO,
"Vista secure install - not sending work\n"
);
USER_MESSAGE um(
"Unable to send work to Vista with BOINC installed in protected mode", "high"
);
reply.insert_message(um);
USER_MESSAGE um2(
"Please reinstall BOINC and uncheck 'Protected application execution'", "high"
);
reply.insert_message(um2);
}
}
}
return false;
}
void process_request(
SCHEDULER_REQUEST& sreq, SCHEDULER_REPLY& reply, char* code_sign_key
) {
@ -1337,9 +1358,15 @@ void process_request(
handle_results(sreq, reply);
// Do this before resending lost jobs
//
if (bad_install_type(sreq, reply)) {
ok_to_send_work = false;
}
reply.wreq.nresults_on_host = sreq.other_results.size();
if (sreq.have_other_results_list) {
if (config.resend_lost_results) {
if (config.resend_lost_results && ok_to_send_work) {
if (resend_lost_work(sreq, reply)) {
ok_to_send_work = false;
}

View File

@ -183,6 +183,7 @@ int SCHED_CONFIG::parse(FILE* f) {
if (xp.parse_bool(tag, "job_size_matching", job_size_matching)) continue;
if (xp.parse_bool(tag, "use_credit_multiplier", use_credit_multiplier)) continue;
if (xp.parse_bool(tag, "multiple_clients_per_host", multiple_clients_per_host)) continue;
if (xp.parse_bool(tag, "no_vista_sandbox", no_vista_sandbox)) continue;
if (xp.parse_bool(tag, "debug_version_select", debug_version_select)) continue;

View File

@ -124,6 +124,7 @@ public:
bool job_size_matching;
bool use_credit_multiplier;
bool multiple_clients_per_host;
bool no_vista_sandbox;
// log flags
//

View File

@ -161,6 +161,7 @@ const char* SCHEDULER_REQUEST::parse(FILE* fin) {
have_ip_results_list = false;
have_time_stats_log = false;
client_cap_plan_class = false;
sandbox = -1;
fgets(buf, sizeof(buf), fin);
if (!match_tag(buf, "<scheduler_request>")) return "no start tag";
@ -318,6 +319,7 @@ const char* SCHEDULER_REQUEST::parse(FILE* fin) {
continue;
}
if (parse_bool(buf, "client_cap_plan_class", client_cap_plan_class)) continue;
if (parse_int(buf, "<sandbox>", sandbox)) continue;
if (match_tag(buf, "<active_task_set>")) continue;
if (match_tag(buf, "<app>")) continue;

View File

@ -306,6 +306,7 @@ struct SCHEDULER_REQUEST {
bool have_ip_results_list;
bool have_time_stats_log;
bool client_cap_plan_class;
int sandbox; // -1 = don't know
SCHEDULER_REQUEST();
~SCHEDULER_REQUEST();