When opening 'Add Project' wizard it shows next fields empty:
Research area, Organisation, and Web site.
This happens because of EllipseStringIfNeeded() function that truncates the string to 0 symbols because the wizard window was not constructed yet and has undefined size.
This fixes#2444.
Signed-off-by: Vitalii Koshura <lestat.de.lionkur@gmail.com>
- Add an official notion of dynamic AM.
Conveyed in AM reply message, stored in AM account file.
- Report accounting info only to dynamic AMs
- Fix bug where account info file wasn't written for AMs using authenticators
- In handling GUI RPC to do AM RPC, use info for current AM, e.g. if it's dynamic
See issue #2452.
If using a dynamic AM, the client may starve, e.g. because
the assigned projects are down.
Detect this, and send "starvation RPCs" to the AM
giving details about the situation.
But don't do this too often; use exponential backoff.
- show if unstarted tasks are suspended, fixes#2403
- tune down verboseness and show suspend status only if task is suspended
- show estimated time remaining for unstarted tasks to allow estimating cache size
- show unstarted task's app version number correctly by using version number from RESULT (via version_num) instead of ACTIVE_TASK (via app_version_num)
that is considered cryptographically secure. This required adding the
random_compat library (MIT License) to provide support for PHP versions
before 7.
Allow projects to show (non-DB) content even if stop_web is present
(e.g. description of the project on front page).
stop_web really means "the DB is offline".
This leaves the user record and host records in the DB
to avoid dangling references from the result table.
It:
- changes the user name, email addr, and auth to "deleted_xxx"
- removes the user from team
- removes posts by the user
- removes PMs by the user
- removes friend connection
- removes profile
- "anonymizes" the hosts (erase IP addr and domain name)
Note 1: this is accessed by admins using a script in ops/;
It's not available to users.
Note 2: this may not satisfy the requirements of EU-GDPR
since it doesn't delete the user and host records.
The client shows what kind of operating system it has detected in startup log message and elsewhere. This is confusing and not helping in troubleshooting when people expect these messages to describe the client itself.
Change the messages to use client's build platform instead.
Startup log message, output of --version and user agent string should be safe to change without breaking anything. The client still uses OS platform in various places but changing these would break stuff:
- Scheduler request XML. Scheduler expects scheduler_request.platform_name to be OS primary platform.
- client_state.xml. Client writes OS primary platform and alt platforms separately to client_state.xml. The client reads primary platform only to see if it has changed. The client doesn't read alt platforms but some other program might and depends on the platforms being as they are now. Not changing this means the client won't be able to detect when its own platform has changed. OS platform changes are still detected.
- get_state GUI RPC. The client writes primary platform to client_state.platform_name and all platforms, including primary, to client_state.platform. BOINC Manager only reads client_state.platform. As such, client_state.platform_name could be changed to client's build platform but some 3rd party manager might depend on it being OS primary platform.
- time_stats_log. The client writes platform info there. Unclear who uses that information.
Closes#2386.
NO_PER_THREAD_LOCALE has been replaced by HAVE__CONFIGTHREADLOCALE and
HAVE_USELOCALE.
Also remove HAVE_DECL__CONFIGTHREADLOCALE which was used only for
NO_PER_THREAD_LOCALE.
SET_LOCALE is no-op when using per-thread locales making SET_LOCALE
unnecessary.
When per-thread locales are not available using SET_LOCALE in
CDlgDiagnosticLogFlags can cause Manager to get stuck to C locale. The
lifetime of two SET_LOCALE objects can be interleaved if log flags are
loaded or saved and an async RPC is launched at the same time. If the
lifetimes are interleaved the first object sets global locale to C. The
second object saves the global locale that was set to C by the first
object. First object restores the global locale correctly. After that
the second object incorrectly restores the global locale to C.
On Linux, Manager sometimes prints timestamps in C locale instead of the
locale user has chosen. This happens when Manager is formatting a
timestamp and at the same time a GUI RPC is in progress. GUI RPCs
temporarily set the global locale to C locale with SET_LOCALE.
Use SET_LOCALE's per-thread locale version and set thread locale in
Manager's RPC thread to fix this.
Also clean up #ifdef mazes in SET_LOCALE and Manager's RPC thread now
that there are HAVE_* macros available. Remove OS X < 10.4 code because
that old OS X versions are not supported any more.
Fixes#2399.
Allows fixing and cleaning up per-thread locale support in Manager and
libboinc.
locale.h and xlocale.h were checked for libboinc_graphics. Move
xlocale.h check to correct place and remove locale.h check. locale.h has
been part of C standard library since C89.
The support for per-thread locales cannot be reliably inferred from the
existence of different headers. Some systems declare uselocale() in
locale.h, others in xlocale.h and xlocale.h is no longer included in GNU
libc. Instead explicitly check for uselocale() and
_configthreadlocale().
Add uselocale() check result to Mac config.h so that the #ifdef mazes
can be simplified.
Also correct quoting in AC_CHECK_FUNCS and AC_CHECK_HEADERS calls.
* Make build scripts fully whitespace safe to the extend premitted by autotools
* Let all build scripts fail fast on error, previously they would continue and then fail with spurious follow-up errors burrowing the actual issue
* Ensure that all build scripts start with a valid shebang (`#!`)
* Fix jumbled letters in `android/build_build_app_x86.sh`
* `PATH` environment was: `export PATH="$PATH:$TCBINARIES:$TCINCLUDES/bin"`
* If system `libcurl-dev` (Debian) is installed its `curl-config` script will be first in `PATH`
* `./configure` will choose the system `curl-config` and fail to compile