- implode() cares about arg order
- strlen(), strstr(), stripslashes() don't take null arg
- time() takes no args
There are probably others.
I don't currently have 8.1 set up, and am working off bug reports.
Note: if a function expects, say, a string (and not null)
and you get a warning about a null arg,
don't fix it by casting the param to string.
That masks possible bugs.
Instead, find out where null is being passed, and fix it there.
web: server status: fix case where app has no results
web: fix case where get_logged_in_user() is called twice,
first with must_be_logged_in == false and later true.
web: xml_error(): $num default is -1
web: validate_email_addr(): tell user to check spam folder if no email
The way errors were being handled in submit_rpc_handler.php,
the replies could end up looking like:
<error>
...
</error>
<actual_reply>
...
</actual_reply>
which doesn't parse with PHP's simplexml because there's no outer element.
So the PHP interface to job submission didn't work in some cases.
To fix this, I changed the RPC replies to have an enclosing element,
which is the name of the RPC, e.g.
<submit_batch>
<error>
...
</error>
... other stuff
</submit_batch>
RPC replies should now always be valid XML, errors or not.
- If handling an XML RPC, use set_error_handler() to output PHP warnings as XML.
Otherwise they appear as strings in the XML reply, making them not parse.
- suppress warnings from PHP function calls where we're already checking errors
Having a project symlink its html/ to a different dir doesn't work,
because if you cd into html/ops to run a script,
there's no way to know where the project dir is, so you can't find config.xml
* The previous implementation doesn't work if the /html directory is a symlink
* The new implementation supports symlinks while not adding any additional
assumptions regarding relative file locations
Background:
BOINC's codebase consists of regular source code for compilation as well as
source code for direct deployment, such as the /html folder. Projects might
choose to use a checkout of the BOINC repository and a symlink in their deployed
project root directory targeting the /html directory to facilitate html-related
patch tracking and deployment (in situ). This requires the "html" symlink not to be
resolved during lookups of the project root directory (e.g. to access config.xml).
On some hosts, gpu_active_frac may be much less than active_frac
(i.e., GPUs may be available much less than CPUs).
Use gpu_active_frac in the following places:
- scheduler: in estimating the elapsed time of jobs,
to decide whether they can meet deadline
- scheduler: in computing the effective speed of a (host, app version),
when deciding what size class it belongs to
- size_census: in computing effective speed of (host, app versions)
(Previously, we were just using active_frac in all these cases)
- add a PHP interface for lookup_account()
- PHP interfaces return error number as well as message
(messages change; numbers don't)
- using symbolic error codes instead of hardwired numbers in PHP code
- change "query_batch" to "query_batches"; allow multiple batches
- add "ping server" web RPC and GAHP function
- change BoincDb::get() so that it generates XML error message if needed
that need it, then exits.
For big projects coming up after an outage, run this before bin/start
to minimize startup overload
- tweaks to PHP libraries to allow them to be used
by scripts anywhere in the dir hierarchy
svn path=/trunk/boinc/; revision=22959
- web: remove file_get_contents() workaround for PHP4
- web: If Akismet or ReCaptcha failure,
display the form again with a warning message at the top.
That way the user doesn't lose the text they just typed.
svn path=/trunk/boinc/; revision=16175
If an app is hard, the scheduler always does the deadline check,
even if the client has no other jobs for this project.
And the estimated wallclock duration is multiplied by 1.3,
to avoid sending jobs to hosts that will barely make the deadline.
Hard apps are marked by setting weight = -1.
This is a total kludge, to avoid adding another field to app.
svn path=/trunk/boinc/; revision=15607