diff --git a/checkin_notes b/checkin_notes index 3d8fa33e48..226649f7c3 100644 --- a/checkin_notes +++ b/checkin_notes @@ -2316,10 +2316,10 @@ David 18 Apr 2011 cs_scheduler.cpp David 18 Apr 2011 - - client: fix message describing work request + - client: fix message describing work request - client/ - scheduler_op.cpp + client/ + scheduler_op.cpp Rom 19 Apr 2011 - MGR: Adjust the width of the various tabs in advanced view if the notice text @@ -2466,15 +2466,15 @@ David 24 Apr 2011 acct_mgr.cpp David 24 Apr 2011 - - client: show error messages from account managers correctly - - client/manager: if a job is missing a GPU, show details - - client: win compile fix - - client/ + - client: show error messages from account managers correctly + - client/manager: if a job is missing a GPU, show details + - client: win compile fix + + client/ acct_mgr.cpp - client_msgs.cpp,h - client_types.cpp - sysmon_win.cpp + client_msgs.cpp,h + client_types.cpp + sysmon_win.cpp David 24 Apr 2011 - client: simplify the semantics of sticky files: @@ -2551,10 +2551,10 @@ David 26 Apr 2011 app_control.cpp David 26 Apr 2011 - - web: fix infinite recursion when project is down + - web: fix infinite recursion when project is down - html/inc/ - util.inc + html/inc/ + util.inc Rom 26 Apr 2011 - VBOX: Begin merging the two different vbox wrappers (COM vs. Daniel's from @@ -2574,10 +2574,10 @@ Rom 26 Apr 2011 vboxwrapper.vcproj David 26 Apr 2011 - - web: eliminate double calls to page_head() + - web: eliminate double calls to page_head() - html/inc/ - util.inc + html/inc/ + util.inc David 26 Apr 2011 - web: fix bug that cause "use signature" preference to be ignored @@ -2620,12 +2620,37 @@ Charlie 28 Apr 2011 sg_BoincSimpleFrame David 28 Apr 2011 - - client: fix bug that prevented work fetch in some cases + - client: fix bug that prevented work fetch in some cases - client/ - client_state.cpp - main.cpp - work_fetch.cpp - lib/ - coproc.h - hostinfo.cpp + client/ + client_state.cpp + main.cpp + work_fetch.cpp + lib/ + coproc.h + hostinfo.cpp + +David 28 Apr 2011 + - client: change the handling of account manager replies: + Old: + If the AM sends us a project we're already attached to, + and the authenticator is different, + print an error message and don't change anything. + Problem: + If the AM is using weak authenticators, + and the user has changed their password, + the weak authenticator changes. + In this case the AM will send the new weak auth, + the client will ignore it, + and all subsequent scheduler RPCs will fail + until the user removes/adds the project. + Solution: + If the AM sends us a new auth for a project, use it. + Note: + From the time the password is changed on the project + to the next AM RPC, + the client will have a bad weak auth and scheduler RPCs will fail. + That's OK. + + client/ + acct_mgr.cpp diff --git a/client/acct_mgr.cpp b/client/acct_mgr.cpp index 1987774b98..75ae2815f2 100644 --- a/client/acct_mgr.cpp +++ b/client/acct_mgr.cpp @@ -505,65 +505,66 @@ void ACCT_MGR_OP::handle_reply(int http_op_retval) { // BAM! leaves authenticator blank if our request message // had the current account info // - if (acct.authenticator.size() && strcmp(pp->authenticator, acct.authenticator.c_str())) { - msg_printf(pp, MSG_INFO, - "Already attached under another account" - ); + if (acct.authenticator.size()) { + if (strcmp(pp->authenticator, acct.authenticator.c_str())) { + strcpy(pp->authenticator, acct.authenticator.c_str()); + msg_printf(pp, MSG_INFO, + "Received new authenticator from account manager" + ); + } + } + pp->attached_via_acct_mgr = true; + if (acct.dont_request_more_work.present) { + pp->dont_request_more_work = acct.dont_request_more_work.value; + } + if (acct.detach_when_done.present) { + pp->detach_when_done = acct.detach_when_done.value; + if (pp->detach_when_done) { + pp->dont_request_more_work = true; + } + } + + // initiate a scheduler RPC if requested by AMS + // + if (acct.update) { + pp->sched_rpc_pending = RPC_REASON_ACCT_MGR_REQ; + pp->min_rpc_time = 0; + } + if (acct.resource_share.present) { + pp->ams_resource_share = acct.resource_share.value; + pp->resource_share = pp->ams_resource_share; } else { - //msg_printf(pp, MSG_INFO, "Already attached"); - pp->attached_via_acct_mgr = true; - if (acct.dont_request_more_work.present) { - pp->dont_request_more_work = acct.dont_request_more_work.value; - } - if (acct.detach_when_done.present) { - pp->detach_when_done = acct.detach_when_done.value; - if (pp->detach_when_done) { - pp->dont_request_more_work = true; - } - } - - // initiate a scheduler RPC if requested by AMS + // no host-specific resource share; + // if currently have one, restore to value from web // - if (acct.update) { - pp->sched_rpc_pending = RPC_REASON_ACCT_MGR_REQ; - pp->min_rpc_time = 0; - } - if (acct.resource_share.present) { - pp->ams_resource_share = acct.resource_share.value; - pp->resource_share = pp->ams_resource_share; - } else { - // no host-specific resource share; - // if currently have one, restore to value from web - // - if (pp->ams_resource_share >= 0) { - pp->ams_resource_share = -1; - PROJECT p2; - strcpy(p2.master_url, pp->master_url); - retval = p2.parse_account_file(); - if (!retval) { - pp->resource_share = p2.resource_share; - } else { - pp->resource_share = 100; - } - } - } - - if (acct.suspend.present) { - if (acct.suspend.value) { - pp->suspend(); + if (pp->ams_resource_share >= 0) { + pp->ams_resource_share = -1; + PROJECT p2; + strcpy(p2.master_url, pp->master_url); + retval = p2.parse_account_file(); + if (!retval) { + pp->resource_share = p2.resource_share; } else { - pp->resume(); + pp->resource_share = 100; } } - if (acct.abort_not_started.present) { - if (acct.abort_not_started.value) { - pp->abort_not_started(); - } + } + + if (acct.suspend.present) { + if (acct.suspend.value) { + pp->suspend(); + } else { + pp->resume(); } - for (int i=0; ino_rsc_ams[i] = acct.no_rsc[i]; + } + if (acct.abort_not_started.present) { + if (acct.abort_not_started.value) { + pp->abort_not_started(); } } + for (int i=0; ino_rsc_ams[i] = acct.no_rsc[i]; + } } } else { // here we don't already have the project. diff --git a/client/cpu_sched.cpp b/client/cpu_sched.cpp index 377c30368a..cfdb8d6cec 100644 --- a/client/cpu_sched.cpp +++ b/client/cpu_sched.cpp @@ -1225,10 +1225,12 @@ static inline bool get_fractional_assignment( return true; } } - msg_printf(rp->project, MSG_INFO, - "[coproc] Insufficient %s for %s: need %f", - cp->type, rp->name, usage - ); + if (log_flags.coproc_debug) { + msg_printf(rp->project, MSG_INFO, + "[coproc] Insufficient %s for %s: need %f", + cp->type, rp->name, usage + ); + } return false; } diff --git a/html/inc/util.inc b/html/inc/util.inc index 3b17c887b9..0e0db89daf 100644 --- a/html/inc/util.inc +++ b/html/inc/util.inc @@ -27,6 +27,7 @@ require_once("../inc/profile.inc"); // don't allow /... at the end of URL if (array_key_exists("PATH_INFO", $_SERVER)) { + print_r($_SERVER); die("bad URL"); } diff --git a/sched/sched_types.cpp b/sched/sched_types.cpp index 7dda61ee16..b696fc1340 100644 --- a/sched/sched_types.cpp +++ b/sched/sched_types.cpp @@ -210,7 +210,6 @@ const char* SCHEDULER_REQUEST::parse(FILE* fin) { client_cap_plan_class = false; sandbox = -1; allow_multiple_clients = -1; - coprocs.clear(); // TODO: use XML_PARSER FOR THIS