mirror of https://github.com/BOINC/boinc.git
- 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 svn path=/trunk/boinc/; revision=23479
This commit is contained in:
parent
382905661f
commit
8757e07f4f
|
@ -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
|
||||
|
|
|
@ -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; i<MAX_RSC; i++) {
|
||||
pp->no_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; i<MAX_RSC; i++) {
|
||||
pp->no_rsc_ams[i] = acct.no_rsc[i];
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// here we don't already have the project.
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in New Issue