For certain scenarios (e.g. wcons), having a path to get in and communicate data from the outside.
For starters, have a 'GETWINID' directive for wcons to use to fetch the unambiguous window id
to use for xwininfo tricks. TODO includes concepts from xtcd.pl that enabled things like warr
To facilitate a clean coordinated shutdown, create a verb so that a termination can be done
and know when it is completed. Only allow for the 'special' case of 'skipauth', where unix domain
socket connection is in hand and only root or the service owner can access.
As it heads into RC, will start using the tags and
overly simplifying things in the same way xCAT
revs versions even without changes for the sake
of consistency
When logging was changed from none to full, it would always
start and immediately abort connecting to start again.
Change this by deciding which connection liveness strategy
to use based on how many settings changed. If just logging
changes, then connect only if not connected or connecting.
If more changes, then skip that kinder strategy and go straight
to reconnecting.
Make sure that the dbm object is closed before another thread might come along. Out of an overabundance of caution,
also join() existing cfgwriter thread to make sure that only one thread touches it at a time. In theory, it should only possibly
be after the db is closed, but take no chances.
If the sync thread had moved beyond the point of checking _writepending, but had not quite managed to trigger
isAlive() to be false, the sync cfg to file would transition to never work. Address this by adding one lock and one boolean.
Inside the lock, the two booleans are manipulated to atomically mark the end of thread sync activity linked with
check for pending data to write.
Previously, the console start path would bail out without consuming the '_requestdone' message.
Correct this by reading until requestdone is seen as required by protocol.
If there is a persistent IPMI session and the first to notice was a user request
it would fail with unexpected error. Correct the situation to expect the error
and report more precisely as to the cause.
As usergroups come to exist, make it obvious whether a group is user or node
bound. The attribute names stay the same (since the 'groups' of a 'node' is
clearly 'nodegroup')
The '.' command would fail to exit the function, causing the 'help' output to occur.
Fix this by having the '.' command processed in the same manner as the rest.
When a url that could have been a valid resource collection with a trailing
slash hits the daemon without a trailing slash, it would fail. Correct by
recognizing this scenario and properly handling it.
When shell module plugins failed and exited,
confluent was failing to release the filehandle. This
would ultimately lead to unreasonable exhaustion of
filehandles.
If a bg sync thread is in progress, a key could be marked dirty before the desired change is actually made.
This causes the running thread to pick up the change to 'dirty' keys and save off the as-yet unchanged key.
Reorganize things to have the keys marked dirty only after they have been assigned so that an in-progress
commit to disk only picks up a key after the relevant values have changed.
Previously, the null tenant always synced to disk on every request in pracitice.
Correct that mistake to avoid commit to disk when no changes are being made.
ssl wrap prior to accept causes accept() to be too complicated to stay in the
persistent thread and makes key changes require restart to pickup. Call
the wrap_socket within the dedicated client thread so that it gets up to date
at the right time and picks up certificate changes in a timely fashion.
Some clients have their lives made more convenient by having the
sha512 hash rather than the actual certificate. Prepend with 'sha512$'
to allow for a future where different formats could be specified.
There is no hard guarantee that all 4 bytes will come. In practice,
I've never seen this occur, but to be complete, should make sure recv gets everything it was supposed to.