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
Add custom trim function to code where the strings in the project-specific XML are aded to translation table(s).
Custom function removes whitespace from beginning and end of each line, separated by newline.
https://dev.gridrepublic.org/browse/DBOINCP-418
Adds an admin page where the admin may select and delete teams that meet a certain SPAMMER criteria. Deletion is handled through drupal batch operation.
https://dev.gridrepublic.org/browse/DBOINCP-364
Cppcheck found this issue: Multiplying sizeof() with sizeof() indicates a logic error.
GetWindowText expects the number of characters (3. argument) that fit into the buffer (2. argument).
So a division seems to be correct here instead of a multiplication.
Previously, the credentials in account manager requests
were login name and password hash.
We need to keep this for compatibility with BAM and GR,
but it has problems:
- users can't change AM password
- password hash is stored on client and sent with each AM request
Solution: AM reply can include authenticator instead of name/passwd.
If so, store and use that.
Also: login_token_lookup.php needs to return auth instead of weak auth,
for both projects and AMs.
Weak auths are invalidated when user changes password.