The SETI@home result table is about to run out of 32-bit IDs,
so we need to move to 64-bit result IDs.
This will happen to the workunit table at some point too.
I changed the server C++ code to use the "long" type for all DB IDs
(and to use appropriate conversion codes like %lu).
"long" is 64 bit on 64-bit machines.
For uniformity I did this for all tables,
even ones (like app) that will never get big.
I chose NOT to change the DB schema for now.
The new code will work with 32-bit ID fields in the DB.
As projects approach the 32-bit limit on a table they can change
its ID field, and fields that reference this table, to BIGINT.
This is likely to happen only on the result and workunit tables.
I put functions in html/ops/db_update.php
to change the IDs of these tables.
- XML parser: for parse_string(), malloc the 256KB buffer instead of
allocating it on the stack; the latter crashes threads with 32KB stacks.
However, do the malloc() only if we've actually seen the start tag
(this required a bit of code shuffle).
- BOINC GAHP: escape spaces in error msgs
if a project sends us <no_rsc_apps> flags for all processor types,
then by default the client will never do a scheduler RPC to that project again.
This could happen because of a transient condition in the project,
e.g. it deprecates all its app versions for a while.
To avoid this situation, the client now checks whether the no_rsc_apps flags
are set for all processor types.
If they are, it clears them all.
This will cause work fetch to use backoff,
and the client will occasionally contact the project.
- client: when parsing MD5, use 64 instead of 33 char buffer.
When the XML parser reads a string,
it enforces the buffer size limit BEFORE it strips whitespace.
So if a project put whitespaces before or after the MD5,
it would fail to parse.
for canceling jobs
- added program cancel_jobs for canceling jobs
- DB interface: it's not an error if update_fields_noid()
affects != 1 rows
svn path=/trunk/boinc/; revision=24413
Note: XML_PARSER::parse_str() doesn't currently work right
for something like <foo><a>xx</a></foo>.
It should return "<a>xx</a>".
TODO.
svn path=/trunk/boinc/; revision=24325
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
to mess up input templates containing
<copy_file/> or other attribute tags.
XML_PARSER now contains a member element() for when
you want to copy an element without knowing its structure.
svn path=/trunk/boinc/; revision=23790
fix bug that corrupted WU command lines.
The problem: we were using strcpy(p, p+n) to delete the
first n characters of p.
This is incorrect - the behavior of strcpy() is undefined
if its args overlap.
On some systems (e.q. AQUA's server) it does wacky things.
svn path=/trunk/boinc/; revision=23007
The RSS feed part of it is mostly working.
- client: fix bug in XML_PARSER (tags with attributes weren't
parsed correctly if no attribute buffer supplied)
svn path=/trunk/boinc/; revision=20026
FILE_INFO::url
HOST_INFO::p_vendor, p_model, p_features, os_name, os_version
The following fields are already entity-encoded:
PROJECT::user_name, team_name
APP_INIT_DATA::user_name, team_name
PROXY_INFO:: user names and passwds
These are (as far as I know) the only fields that can
contain special chars.
This is now documented in:
http://boinc.berkeley.edu/trac/wiki/XmlNotes
- client: XML_PARSER::parse_str() now does xml_unescape(),
same as ::parse_str().
svn path=/trunk/boinc/; revision=18915
These cause problems when "read" is a member name, etc.
Do these #defines, conditioned on _MSC_VER,
in the files that actually need them.
- don't include boinc_win.h from parse.h.
principle of minimal inclusion
svn path=/trunk/boinc/; revision=18902