1) store AM and login info in files whose names include the AM URL,
and don't delete them when detach from the AM.
That way if user detaches and reattaches,
we'll still have the opaque data (e.g. host ID)
and the AM won't create a new host.
2) If the AM RPC has an error on the server,
it probably won't return AM name, signing key, or opaque data.
In that case hang onto the old ones.
Ironically, should the user specify invalid XML tag in cc_config.xml, BOINC will write log message containing that tag unescaped and unclosed. Needless to say, it breaks XML parsing instantly. This patch auto-closes this tag in the log message.
Many Android users had existing preferences with settings like
"don't compute when idle" that make sense for PCs but not mobile devices.
When this pref is enforced on Android, no computing happens
and user confusion results.
We're addressing this by using only local prefs on Android.
We considered other approaches - e.g. having a "mobile" venue -
but they're too complex.
If the user typed an extremely long URL into the
Attach to Account Manager wizard, a buffer overrun could result.
There were several places in the code that assumed user-entered
URLs are small (e.g. 256 chars):
- canonicalize_master_url.cpp()
- several GUI RPC interfaces, when generating XML request message
- URL-escaping (not relevant here, but fix anyway)
Change all these to stay within buffers regardless of URL size.
Note: do this by truncation.
This will cause error messages like "can't connect to project"
rather than saying the URL is too long. That's OK.
- client: if acct mgr sends us an account with no authenticator,
show an error message instead of trying to attach
svn path=/trunk/boinc/; revision=25608
(e.g. when editing it via the Manager).
Include only the GPUs that were specified in the original cc_config.xml,
not those detected by the client.
- client: fix bug that failed to require authorization for
GUI RPCs that are supposed to be authorized
- client: report parse errors in acct_mgr_url.xml and acct_mgr_login.xml
- fix compile warnings
- user web: in sample project_specific_prefs.inc,
get app names from the DB instead of listing them in the PHP code.
svn path=/trunk/boinc/; revision=24518
don't start the RPC directly;
that might fail if CLIENT_STATE::gui_http is busy.
Instead, set a timer field.
- client: structure ACCT_MGR_OP the same as other GUI_HTTP_OP variants
- client: clarify the comments on GUI_HTTP and GUI_HTTP_OP
Note: GUI_HTTP and GUI_HTTP_OP are misnomers; they refer to
any HTTP op other than scheduler requests and file transfers.
Should change the name, maybe to CLIENT_HTTP*
svn path=/trunk/boinc/; revision=24238
the <working_global_preferences> element in
scheduler RPC request
(tells the server that there's an override file).
- account manager RPC: add <working_global_preferences> element,
including the override flag.
- web: add "no time limit" option for forum search
- web: increase show-user-post query limit to 10000
svn path=/trunk/boinc/; revision=24129
Add parsed_tag and is_tag to the class,
so that parsing functions don't need to declare them
and pass them around.
- Complete the task of using XML_PARSER as the argument
to all parsing functions.
(Internally, many of these functions still use the old XML parser;
that's the next step.)
svn path=/trunk/boinc/; revision=23978
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
- new GPU types can be added easily
- users can specify GPUs in cc_config.xml,
referred to by app_info.xml,
and they will be scheduled by BOINC
and passed --device N options
Note: the parsing of cc_config.xml is not done yet.
- RPC protocols (account manager and scheduler)
can now specify GPU types in separate elements
rather than embedding them in tag names
e.g. <no_rsc>NVIDIA</no_rsc> rather than <no_cuda/>
- client: in account manager replies, parse elements of the form
<no_rsc>NAME</no_rsc>
indicating the GPUs of type NAME should not be used.
This allows account managers to control GPU types
not hardwired into the client.
Note: <no_cuda/> and <no_ati/> will continue to be supported.
- scheduler RPC reply: add
<no_rsc_apps>NAME</no_rsc_apps>
(NAME = GPU name)
to indicate that the project has no jobs for the indicated GPU type.
<no_cuda_apps> etc. are still supported
- client/lib: remove set_debts() GUI RPC
- client/scheduler RPC
remove <cuda_backoff> etc. (superceded by no_app)
Exception: <ip_result> elements in sched request
still have <ncudas> and <natis>.
Fix this later.
Implementation notes:
- client/lib: change "CUDA" to "NVIDIA" in type/variable names, and in XML
Continue to recognize "CUDA" for compatibility
- host_info.coprocs no longer used within the client;
use a global var (COPROCS coprocs) instead.
COPROCS now has an array of COPROCs;
GPUs types are identified by the array index.
Index zero means CPU.
- a bunch of other resource-specific structs (like RSC_WORK_FETCH)
are now stored in arrays, with same indices as COPROCS
(i.e. index 0 is CPU)
- COPROCS still has COPROC_NVIDIA and COPROC_ATI structs to hold vendor-specific info
- APP_VERSION now has a struct GPU_USAGE to describe its GPU usage
svn path=/trunk/boinc/; revision=23253