attribute is missing. That's the app's problem, not BOINC's
- sample assimilator: if a canonical instance has no output files,
rather than quitting create a file named WU_NAME_no_output_files
svn path=/trunk/boinc/; revision=19082
elapsed_time: the elapsed time (runtime) as reported by client
flops_estimate: the app's estimated FLOPS as reported by app_plan()
app_version_id: the DB ID of the app_version used
(or -1 if anonymous platform)
TODO: show these in the web interfaces,
and use them where appropriate
svn path=/trunk/boinc/; revision=19002
Old:
1) check deadline based on wu.delay_bound
2) in add_result_to_reply(), potentially modify wu.delay_bound,
e.g. because of retry acceleration
problem: reducing delay bound may cause deadline miss
New:
1) new function get_delay_bound_range()
(called from wu_is_infeasible_fast())
returns optimistic and pessimistic delay bounds.
Retry acceleration logic is here.
2) check deadline based on optimistic bound;
if that fails, check based on pessimistic bound.
Set wu.delay_bound to the one that worked.
Notes:
- get_delay_bound_range() needs result priority and report deadline,
and it's called before we read the full result.
So add these items to WORK_ITEM and WU_RESULT.
- get_delay_bound_range() could be customized for
project-specific deadline policy.
- add_result_to_reply() was becoming a toxic waste dump.
Deadline-related stuff should have been factored out in any case.
svn path=/trunk/boinc/; revision=18946
is running a graphics application.
Change the semantics of the "don't use GPU while computer in use" pref
to "don't use a GPU that's running a graphics app while
computer is in use".
This will increase GPU utilization on multi-GPU systems.
svn path=/trunk/boinc/; revision=18942
e.g. the Milkyway@home ATI app, of which we can typically run
2 or 3 instances at once on a GPU.
Changes include:
- In APP_VERSION, don't use a COPROCS to represent the GPU
requirements; just use doubles ncudas and natis.
- sufficient_coprocs() etc. are no longer members of COPROCS
- in HOST_USAGE, ncudas and natis are doubles
- in scheduler request, req_instances is now a double
This checkin doesn't include the job scheduling logic,
i.e. assigning jobs to GPUs. That will follow.
svn path=/trunk/boinc/; revision=18868
don't modify user preferences or CPID.
- client: fix bug that shows ATI version incorrectly
- database: host.posts has been repurposed as a salt (or seqno)
for a new type of weak authenticator that won't depend on password
- web code:
modify forum_preferences.posts instead of host.posts.
(actually, the former isn't used either, we just do a select count(*);
should fix this at some point).
svn path=/trunk/boinc/; revision=18865
(This bug has been there since 28 Oct 2004)
- GUI RPC and manager: include project backoff in FILE_TRANSFER,
so that manager gets up-to-date value
svn path=/trunk/boinc/; revision=18786
feature without requiring use of score-based scheduling.
So add a new customizable function, wu_is_infeasible_custom(),
where projects can put job-specific checks.
Also, move customizable functions (of which there are now 4)
to a new file, sched_customize.cpp.
svn path=/trunk/boinc/; revision=18767
"min # of GPU processors" attribute (stored in batch)
and are sent only to hosts whose GPUs have at least this #.
The logical place for this is in the scoring function, JOB::get_score().
I added a clause (#ifdef'd out) that does this.
It rejects the WU if #procs is too small,
otherwise it adds min/actual to the score.
This favors sending jobs that need lots of procs to GPUs that have them.
svn path=/trunk/boinc/; revision=18764
to the executable (../../projects/x/y) into argv[0],
not just the executable filename.
Apparently the new NVIDIA drivers have a bug that cause
CUDA apps to crash unless this is done.
- Scheduler: in no-host-ID case, don't mark results as "detached"
if request contains any in-progress results
svn path=/trunk/boinc/; revision=18754
for showing how GPU instances are being reserved
- scheduler: add "sse3" plan class example
- web: add option (NO_TEAMS constant) for suppressing teams
svn path=/trunk/boinc/; revision=18658
- client: don't write file_infos with no URLs to client_state.xml
for anon platform project; they must be from app_info.xml
svn path=/trunk/boinc/; revision=18592
Daemons that are managed by 'start' go to $(libexecdir)/sched.
The (F)CGI stuff goes to $(libexecdir)/cgi-bin.
Finally, example applications go under $(libexecdir)/examples.
svn path=/trunk/boinc/; revision=18378
so the same set of binaries can be used to handle multiple projects.
<projectroot>/bin is always prepended to $PATH
to ensure that project-specific binaries always take precedence.
From Gabor Gombas.
svn path=/trunk/boinc/; revision=18377
It is now possible to use the same set of tools for multiple
projects by setting BOINC_PROJECT_PATH.
From Gabor Gombas.
svn path=/trunk/boinc/; revision=18376
make_project now generates PROJECT/bin/boinc_path_config.py
to ensure that the interpreter will find the modules.
From Gabor Gombas.
svn path=/trunk/boinc/; revision=18374
and treat it as a recoverable error (i.e., retry).
The file deleter may run on a host that NSF-mounts
the upload/download dirs, and NSF mounts can file.
- scheduler: include WU#ID in log msgs for handled results
svn path=/trunk/boinc/; revision=18351
this is needed to handle stale entries and slots
reserved by now-dead PIDs
- client: unify code for writing soft link files
svn path=/trunk/boinc/; revision=18256
The limit on jobs in progress is now
max_wus_in_progress * NCPUS
+ max_wus_in_progress * NGPUS
where NCPUS and NGPUS reflect prefs and are capped.
Furthermore: if the client reports plan class for in-progress jobs
(see checkin of 31 May 2009)
then these limits are enforced separately;
i.e. the # of in-progress CPU jobs is <= max_wus_in_progress*NCPUS,
and the # of in-progress GPU jobs is <= max_wus_in_progress_gpu*NGPUS
- scheduler config: rename <cuda_multiplier> to <gpu_multiplier>
- scheduler: <max_wus_to_send> is now scaled by
(NCPUS + gpu_multiplier*NGPUS)
- scheduler: don't keep scanning array if !work_needed()
- scheduler: moved array-scan logic from sched_send.cpp to sched_array.cpp
- scheduler: don't say "no work available" if jobs are available
but work_needed() is initially false
svn path=/trunk/boinc/; revision=18255
limits the # of completed results handled per scheduler RPC.
This may be needed to avoid crashes due to memory allocation
failure (each reported result uses about 128KB memory).
- web: In showing result lists,
include "Validate error" results in the "Invalid" category.
(Previously they didn't appear in any category)
svn path=/trunk/boinc/; revision=18104
- client (Unix): if client crashes while benchmark processes are going,
make sure they detect this and exit.
- back-end programs: remove hardwired assumptions about
what directory they run in, and hence where config.xml is.
E.g., daemons look for it in "..", others expect it in current dir.
New approach: all the programs look for the project dir as follows:
1) the environment var BOINC_PROJECT_DIR, if defined
2) the current dir, if config.xml is there.
3) else ".."
This means you can run programs in either proj/bin/ or proj/,
or (using BOINC_PROJECT_DIR) you can keep executables
outside of the project dir.
svn path=/trunk/boinc/; revision=18042
get jobs for (default it all).
Useful if you're mixing locality and regular scheduling.
- a little E@h-specific stuff
From Bernd Machenschalk.
svn path=/trunk/boinc/; revision=18039
- web: divide the stylesheet into "main.css"
(which has formatting stuff, rounded corners etc.)
and "white.css" (which has colors).
The above two from Simek.
- scheduler: change default min NVIDIA driver version
from 17500 to 17700
svn path=/trunk/boinc/; revision=17819
(app versions don't have a <coprocs> around coproc elements,
may an oversight but let's stick with it).
Anyway, I think it's working now.
- lib: remove "owner" array from COPROC.
This was used in client to keep track of assignment of
coprocessors to tasks, but we got rid of the reserve/free scheme.
NOTE: this breaks the mechanism for passing --device N to apps;
I'll have to do this another way. Stay tuned.
svn path=/trunk/boinc/; revision=17543
Otherwise, if an app version has a platform different from
the client's primary platform, the client won't find it.
svn path=/trunk/boinc/; revision=17508
Old: although the request message contained all info
about the app version (flops, coproc usage etc.)
the server ignored this info,
and assumed that all anonymous platform apps where CPU.
With 6.6 client, this could produce infinite work fetch:
- client uses anon platform, has coproc app
- client has idle CPU, requests CPU work
- scheduler sends it jobs, thinking they will be done by CPU app
- client asks for more work etc.
New: scheduler parses full info on anon platform app versions:
plan class, FLOPS, coprocs.
It uses this info to make scheduling decisions;
in particular, if the request is for CUDA work,
if will only send jobs that use a CUDA app version.
The <result> records it returns contain info
(plan_class) that tells the client which app_version to use.
This will work correctly even if the client has multiple app versions
for the same app (e.g., a CPU version and a GPU version)
svn path=/trunk/boinc/; revision=17506
when to do a scheduler RPC:
if user request or acct mgr request, ignore backoff and suspend via GUI;
in all other cases honor both of these.
svn path=/trunk/boinc/; revision=17504
Otherwise we'll get stuck in a loop where the client asks for CPU work,
and the scheduler sends jobs for what it thinks is a CPU app
but is actually a coproc app.
Eventually we should add coproc info to the app descriptions
send in scheduler request,
so that you can use anonymous platform for coproc apps.
But let's wait on this.
- scheduler: compile fix for gcc 4.4. Fixes#854
svn path=/trunk/boinc/; revision=17502
which of those files to include
- Modified MAC address check to work on some non-Linux unixes.
(mac_address.cpp)
- Added suggested change to "already attached to project" checking.
(ProjectInfoPage.cpp)
- changed includes of standard c header files to their c++ equivalents
(i.e. replaced <stdio.h> with <cstdio>) for namespace protection.
- replaced "using namespace std;" with more explicit "using std::function" in
several files.
- Fixed bug in checking whether the os is OS/2 and added conditional OS_OS2
to the build environment. (boinc_platform.m4,configure.ac)
- Changed build environment to not use -nostandardlibs unless we are using
G++ and static linkage is specified. (configure.ac)
- Added makefiles and package building files for solaris CSW package manager.
- Fixed bug with attempting to find login name using logname. (configure.ac)
- Added ifdef HAVE_* protection around some include files commonly found in
sys.
- Added support for unified binary for x86_64/i686-pc-solaris.
(cs_platforms.cpp)
- generate_host_cpid() now uses MAC address on non-linux unix.
(hostinfo_network.cpp)
- Macro BOINC_SET_COMPILE_FLAGS now doesn't check gcc only flags on non-gcc
compilers. (boinc_set_compile_flags.m4)
- Library compiles no longer depend upon the library extension or require
the library to be prefixed with lib.
- More fixes for fcgi builds.
- Added declaration of "struct ether_addr" and ether_ntoa(). Have not yet
implemented ether_ntoa() for machines that don't have it, or where it is
buggy. (unix_util.h)
- Added FCGI::perror() which calls FCGI_perror(). (boinc_fcgi.{h,cpp})
- Fixed library Makefiles so that all required headers get installed.
svn path=/trunk/boinc/; revision=17388
There are two mechanisms to prevent the scheduler from
sending jobs that won't finish by their deadline.
Simple mechanism:
The client sends the interval x for which CPUs are projected
to be saturated.
Given a job with estimated duration y,
the scheduler doesn't send it if x + y exceeds the delay bound.
If it does send it, x is incremented by y.
Complex mechanism:
Client sends workload description.
Scheduler does EDF simulation, sees if deadlines are missed.
The only project using this AFAIK is BOINC alpha test.
Neither of these mechanisms takes coprocessors into account,
and as a result jobs could be sent that are doomed to
miss their deadline.
This checkin adds coprocessor awareness to the Simple mechanism.
Changes:
Client:
compute estimated delay (i.e. time until non-saturation)
for coprocessors as well as CPU.
Send them in scheduler request as part of coproc descriptor.
Scheduler:
Keep track of estimated delays separately for different resources
- client: fixed bug that computed CPU estimated delay incorrectly
- client: the work request (req_secs) for a resource is the min
of the project's share and the shortfall.
svn path=/trunk/boinc/; revision=17086
- client: restore notion of overworked;
if a project is overworked for a resource R,
don't fetch work for R unless there are idle instances
svn path=/trunk/boinc/; revision=17057
but we don't need to send any more CUDA jobs,
delete the BEST_APP_VERSION record and look for another app version.
This lets the scheduler send both CUDA and CPU app versions
for a given app in a single RPC.
svn path=/trunk/boinc/; revision=17051
1) net adjustment for eligible projects is zero;
2) max LTD is zero
- scheduler: fix msgs so disk size is shown in GB
svn path=/trunk/boinc/; revision=17031
1) it uses a coprocessor
2) it has checkpointed since the client started
3) it's being preempted because of a user action
(suspend job, project, or all processing)
or user preference (time of day, computer in use)
- scheduler: if shared mem seg doesn't exist,
report it and don't crash
svn path=/trunk/boinc/; revision=16992
even if it doesn't use a coprocessor.
- scheduler: added an "nci" (non CPU intensive) plan class
to sched_plan.cpp. It declares the use of 1% of a CPU.
The above two changes are intended to allow the QCN app to
run at above_idle priority, which it needs in order to do 500Hz polling.
- API: the std::string version of boinc_resolve_filename()
acts the same as the char[] version.
svn path=/trunk/boinc/; revision=16985
and add <cuda_multiplier>.
The latter is used in calculating max jobs/day for a host;
namely, it's host.max_results_day * (NCPUS + NCUDA*cuda_multiplier).
Set it to 10 or so if you have CUDA apps.
- scheduler: don't overload effective_ncpus();
instead, add two new functions,
max_results_day_multiplier() and max_wus_in_progress_multiplier()
- scheduler: don't reduce max_results_day if we get an aborted job
(it might have been aborted by the project;
not appopriate to punish host in this case)
svn path=/trunk/boinc/; revision=16959
- Update to libtool 1.5.24
- build environment: Major automake changes that I've been warning about
for some time.
- Now uses libtool to build libraries.
- Builds separate boinc_fcgi and sched_fcgi libraries for use with
FCGI server components.
- New macro "BOINC_CHECK_LIB_WITH" that executes a "AC_CHECK_LIB" on
a library only if --with-libname[=DIR] is specified on the configure
command line. This is to allow inclusion of libraries when the
ssl, gtk, wxWidgets, or other configuration is incorrect for static
libraries.
- Added a lot of "--with-*" for some libraries that might be required for
static builds.
- The sea directory has been moved to packages/generic. Changes to sea
and the associated scripts might be required to better make use of the
staging mechanism and shared libraries.
- Fixed includes of boinc_fcgi.h in many files.
- Fixed places where FCGI_FILE needs to be used implicitly.
- Fixed missing define of _SC_PAGESIZE on hosts that define only
_SC_PAGE_SIZE.
- Moved build of boinc_cmd (and source file) from lib to client
svn path=/trunk/boinc/; revision=16904
- parse new request message elements
(CPU and coproc requested seconds and instances)
- decide how many jobs to send based on these params
- select app version based on these params
(may send both CPU and CUDA app versions for the same app!)
svn path=/trunk/boinc/; revision=16861
exceptional cases (e.g., send at least one job to a host with no work)
apply whether using EDF or basic check
- client: don't accept 0 for active/on/connected frac; set to 1
svn path=/trunk/boinc/; revision=16744
- web: check whether to show profile in separate function
from displaying profile; eliminate double headers
- scheduler: finish purge of redundant arguments
svn path=/trunk/boinc/; revision=16726
put a textual summary of them in host.serialnum (currently unused)
- web: show coprocs on host detail page
- db_dump: include coproc info in host XML
svn path=/trunk/boinc/; revision=16697
for the selected APP_VERSION, rather than on the CPU benchmarks.
Otherwise estimates are wrong for GPU or multi-thread apps.
- scheduler: start switching from having SCHED_REQUEST and
SCHED_REPLY as globals instead of passing them around as args;
to be continued.
svn path=/trunk/boinc/; revision=16691
- scheduler: fix egregious bug where wu_is_infeasible_fast() result
is ignored, and we send jobs to hosts that can't handle them.
- scheduler: don't check for disk space in work_needed();
do it in check_disk(), which generates a message to user.
- scheduler: add -debug_log flag, which sends stderr to
"debug_log" rather than scheduler_log.txt (for debugging)
svn path=/trunk/boinc/; revision=16578
- API: use non-verbose option to zip
- scheduler: if multiple_client_per_host is set,
don't mark results as over if get repeat CPID
svn path=/trunk/boinc/; revision=16445
If you store input and output files on different servers,
you can run 2 file_deleters, each one on the same machine
as the files it's going to be deleting.
- file_deleter: add -help option and usage()
client/
cpu_sched.cpp
sched/
file_deleter.cpp
svn path=/trunk/boinc/; revision=16397
because we don't have any (matchmaker only).
- back end programs: for programs that do enumerations,
check for error returns and exit
(otherwise we'll get stuck forever if DB fails)
NOTE: In the course of researching this I came across a bug
in the transitioner: if there's a WU with more than 1000 results,
the enumeration will always return ERR_DB_NOT_FOUND,
and the transitioner won't ever do anything again.
Fixing this is a little tricky, so I'm not going to do it right now.
svn path=/trunk/boinc/; revision=16324
If set the "effective NCPUS" (which is used to scale
daily_result_quota and max_wus_in_progress)
is max'd with the # of CUDA GPUs.
svn path=/trunk/boinc/; revision=16246
(after user confirmation).
This is called from "upgrade", and can also be run by itself.
NOTE: this mechanism will handle all DB updates going forward.
Older updates must be done the old way (edit and run db_update.php)
- Web: let teams determine whether they're accepting new members
svn path=/trunk/boinc/; revision=16160
is still alive before handling a request. If not, try to reconnect.
This will hopefully make things work better if MySQL goes down and up
when using FCGI.
svn path=/trunk/boinc/; revision=16112
we're the main program (otherwise we didn't lock it in
the first place, and a crash results). From Artyom Sharov.
- scheduler: add support for the GCL simulator,
which uses special versions of backend programs
that use virtual time,
and that wait for signals instead of sleep()ing.
To compile:
make clean
configure CXXFLAGS="-DGCL_SIMULATOR"
make
svn path=/trunk/boinc/; revision=16036
a modified boinc version.
- Added new header "boinc_fcgi.h" to be used instead of "fcgi_stdio.h".
This header defines I/O functions in the namespace FCGI rather than using
redefined functions the way "fcgi_stdio.h" does. This was causing a lot
of headaches when both <cstdio> and "fcgi_stdio.h" was called. Using
overloaded functions fixes this problem, except when the only difference
between functions is the return type (for example ::fopen() returns FILE*
and FCGI::fopen() returns FCGI_FILE*).
- Fixed some missing "#ifdef _WIN32" blocks in filesys.C
svn path=/trunk/boinc/; revision=15984
- API: in APP_INIT_DATA, enclose project preferences in tags
so that it's legal XML
- scheduler: add <multiple_clients_per_host> option.
Use this if your project runs on Condor or grids
and (to use multicore machines) you're running
multiple clients per host.
This will skip the host lookup based on IP address.
svn path=/trunk/boinc/; revision=15954
that points to the workunit being processed;
you can use this in your init_result(), compare_result() etc.
if you need it.
svn path=/trunk/boinc/; revision=15919
saying "no work was available for the apps you requested"
with locality scheduling (i.e. Einstein@home)
even if the user hasn't select apps.
Note: the logic for printing these messages won't work
for matchmaker scheduling.
svn path=/trunk/boinc/; revision=15847
(mostly from Simek)
fixes#716
- validator: tweak the way host error rate is computed,
e.g. on error bump rate by .1 instead of .05
svn path=/trunk/boinc/; revision=15771
using anonymous platform
even if they don't have the necessary app version.
Also, send an explanatory message in this case.
fixes#713
svn path=/trunk/boinc/; revision=15765
- scheduler: fix bug in adaptive replication:
if send an unreplicated job to untrusted host,
set both wu.target_nresults and wu.min_quorum to app.target_nresults.
svn path=/trunk/boinc/; revision=15762
client version. David -- this can probably be done
better and might indicate that some other info is not
being properly copied. Please review and fix if needed.
Before this fix, scheduler was complaining about
outdated core clients version 0 < min needed core 413.
tools for scheduler logging: change cgi.log.X to scheduler.log.X
in script that creates on-line logs for users to read
to help diagnose problems.
svn path=/trunk/boinc/; revision=15751
wish to use it.
- The script calculate_credit_multiplier (expected to be run daily as
a config.xml task) looks at the ratio of granted credit to CPU time
for recent results for each app. Multiplier is calculated to cause
median hosts granted credit per cpu second to equal to equal that
expected from its benchmarks. This is 30-day exponentially averaged
with the previous value of the multplier and stored in the table
credit_multplier.
- When a result is received the server adjusts claimed credit by the
value the multiplier had when the result was sent.
svn path=/trunk/boinc/; revision=15661
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
1) the assimilator creates a job_summary_WUID file saying
- what host did the job
- error status if any
- info about missing output files
2) all output files are now optional.
3) the assimilator deletes temp files (templates, job dir file)
svn path=/trunk/boinc/; revision=15551
in scheduler request messages, without checking its contents.
One user had apparently edited global_prefs.xml with an XML editor;
it had an <?xml tag at the start,
and had been collapsed into a single line with no newlines,
and no newline at the end.
This caused all scheduler requests from that client to get
"Incomplete request" responses.
The long-term fix is for the client to verify global_prefs.xml,
and for the scheduler to parse it with XML_PARSER.
As a short-term fix, I made these changes:
- If the scheduler reads a line that's too long, it ignores it.
- The scheduler ignores <?xml
svn path=/trunk/boinc/; revision=15543
mostly so that the parse function could assume
that everything was initially zero.
However, various back-end functions pass around SCHED_CONFIG&
as an argument (also named "config").
This creates a shadow, which is always bad.
Worse is the possibility that some projects have back-end programs
that have a SCHED_CONFIG variable that's automatic,
and therefore isn't zero initially,
and therefore isn't parsing correctly.
To fix this, I changed the 2 vectors in SCHED_CONFIG into pointers,
and have the parse routine zero the structure.
I was tempted to remove the SCHED_CONFIG& args to back-end functions,
but this would have broken some projects' code.
I did, however, change the name from config to config_loc
to avoid shadowing.
Also fixed various other compiler warnings.
svn path=/trunk/boinc/; revision=15541
set the timestamp of the thread to the timetamp of
the latest non-hidden post (rather than to now).
Same thing for forum timestamp.
- scheduler: return more informative message to user in case of
request message parse error
svn path=/trunk/boinc/; revision=15526
was being cast to a pointer to 64-bit time field
(this caused wrong results on 64-bit servers)
From Sharov Artyom.
svn path=/trunk/boinc/; revision=15517
This tells the sample bitwise validator to ignore this file.
- client: parse the above field (avoid "unparsed XML" msgs)
svn path=/trunk/boinc/; revision=15514
- change ERR_CHILD_FAILED TO EXIT_CHILD_FAILED
(it's an exit code, not a function error code)
- client: reduce severity of benchmark error
- scheduler: compile fix
svn path=/trunk/boinc/; revision=15423
add new functions get_output_file_info();
- change get_output_file_path() to look at the result's
xml_doc_in rather than its xml_doc_out;
this is the one that will have <optional/>
- fix crashing bug in the above
svn path=/trunk/boinc/; revision=15334
to return a struct FILE_INFO (including "optional")
instead of just the filename.
This lets you avoid erroring out if optional file is missing.
- Sample bitwise validator: support > 1 output file correctly
svn path=/trunk/boinc/; revision=15332
added client/scripts to default client build
removed sea from the default clientgui build
added locale/client to the default clientgui build
moved installed headers from $(includedir) to $(pkgincludedir) which
is $(includedir)/boinc by default.
removed redefinitions of $(includedir) from Makefiles.
- configure:
added locale/client/Makefile to AC_CONFIG_FILES
svn path=/trunk/boinc/; revision=15300
- config option <matchmaker> for matchmaker scheduling
- config options <mm_min_slots>, <mm_max_slots>, <job_size_matching>
to control matchmaker scheduling
- scheduler: tweaks to matchmaker scheduling from Kevin Reed
- web: fixes to alternative stylesheet from Simek
svn path=/trunk/boinc/; revision=15281
would send a reply without having looked up the user and team
in the DB; e.g.:
- client version# is too low
- DB is down
- host is blacklisted
It would then send a full scheduler reply,
including a blank team name and other missing info.
Fix this by setting reply.nucleus_only initially
(this causes a minimal reply to be sent)
and clearing it only if the host/user/team lookup succeeds.
Fixes#417, #633 (I think)
svn path=/trunk/boinc/; revision=15232