2023-10-18  Jan Friesse  <jfriesse@redhat.com>

	build: Prepare version 1.1 release

2023-10-18  Jan Friesse  <jfriesse@gmail.com>

	Merge pull request #128 from jfriesse/make-distcheck-work-for-non-root-user
	build: Make distcheck work for non-root user

2023-10-18  Jan Friesse  <jfriesse@redhat.com>

	build: Make distcheck work for non-root user
	make distcheck calls configure script with --prefix to allow
	installation to tmp directory. ocfdir is not using ${prefix} and instead
	contains absolute path (either taken from resource-agents.pc or
	hardcoded one) so make install fails when running as non-root user.

	Solution is taken from pacemaker project and it relies on setting
	AM_DISTCHECK_CONFIGURE_FLAGS so --with-ocfdir is added with directory
	where user has write permissions.

	Big thanks to Fabio M. Di Nitto <fdinitto@redhat.com> for finding this
	solution.

2023-10-16  Jan Friesse  <jfriesse@redhat.com>

	build: Include icons in release tarballs

2023-10-16  Jan Friesse  <jfriesse@gmail.com>

	Merge pull request #127 from jfriesse/add-release-mk
	Add release mk

2023-10-12  Jan Friesse  <jfriesse@redhat.com>

	build: Add release.mk
	Makefile used to tag and create official tarballs.

	build: Add gitlog-to-changelog
	Instead of hand-written changelog export changelog from git during
	tarball creation.

2023-10-09  Dejan Muhamedagic  <dejanmm@fastmail.fm>

	Merge pull request #126 from jfriesse/fix-testsuite-python-3.12-warning
	tests: Fix Python 3.12 warning

2023-10-06  Jan Friesse  <jfriesse@redhat.com>

	tests: Fix Python 3.12 warning
	Python 3.12 warns about invalid escape sequence '\s'. It is still
	correctly converted, but I guess it is better to escape '\' character
	properly to avoid future breakage.

2023-10-05  Dejan Muhamedagic  <dejanmm@fastmail.fm>

	Merge pull request #125 from jfriesse/attr-hash-table-assert
	attr: Fix glib hash_table != NULL assert

2023-10-05  Jan Friesse  <jfriesse@redhat.com>

	attr: Fix glib hash_table != NULL assert
	Ticket attribute hash table is created only when some attribute exists.
	If it doesn't, list and get operations were producing glib assert.

	Patch adds check in attr_get and attr_list so hash table is used only
	when it has been initialized.

2023-09-25  Dejan Muhamedagic  <dejanmm@fastmail.fm>

	Merge pull request #124 from jfriesse/fix-attr-memleak

2023-09-25  Jan Friesse  <jfriesse@redhat.com>

	attr: Fix memory leak for list and get operation
	attr_get and attr_list were allocation GString but they were calling
	g_string_free with second argument set to FALSE, what means GLib
	was returning character data to caller (see g_string_free
	for complete documentation) instead of freeing them. This return
	value was ignored by attr_* functions so memory leaked.

	Patch to fix this problem is simple - just set second argument of
	g_string_free to TRUE so GLib takes care of freeing all data.

2023-09-25  Dejan Muhamedagic  <dejanmm@fastmail.fm>

	Merge pull request #123 from jfriesse/fix-return-code-on-do-command-failure
	main: Fix exit code on grant/revoke command error

2023-09-25  Jan Friesse  <jfriesse@redhat.com>

	main: Fix exit code on grant/revoke command error
	Client command grant/revoke was returning success exit
	code on some failures (site not configured, arbitrator,
	no tickets given). Test case is running
	`booth grant -s $IP; echo $?`, where IP is not configured in the config
	file.

	Patch fixes this behavior so error code is returned.

2023-06-16  Dejan Muhamedagic  <dejanmm@fastmail.fm>

	Merge pull request #122 from jfriesse/spec-spdx
	spec: Migrate to SPDX license

2023-06-06  Jan Friesse  <jfriesse@redhat.com>

	spec: Migrate to SPDX license
	Both Fedora and openSUSE now recommends to use SPDX shortname format for
	License.

2022-11-17  Dejan Muhamedagic  <dejanmm@fastmail.fm>

	Merge pull request #121 from jfriesse/asciidoc-man
	Improve asciidoc man pages

2022-11-16  Jan Friesse  <jfriesse@redhat.com>

	man: Add generated html files into gitignore

	man: remove literal paragraph format from boothd.8
	boothd.8.txt contains description of -s and -F parameters with more than
	one paragraph. Second paragraph is indented so it is formatted as
	literal paragraph.

	Solution is to remove indenting.

	man: Remove italic bold formatting
	asciidoctor is unable to correctly handle man page
	output of `*'` (bold+italic) formatting.

	For example output of *'daemon'* is converted to \fB\fIdaemon\fP\fP
	what means "set bold font", "set italic font", daemon, "switch to
	previous font", "switch to previous font". So the first \fP will first
	switch to bold font and second \fP will again switch to italic font so
	rest of paragraph is typed as italic.

	asciidoc handles this situation a bit better, because of using
	\fB\fIdaemon\fR\fR (\fR means "switch to roman (or regular) font").

	Proposed solution is to remove `*'` and replace it just by italic font
	(quote `'`).

	man: Do not format __defaults__
	The defaults ticket name is really __defaults__ but because '_'
	character is used for asciidoc formating it dissapeared.

	Solution (inspiration is a2x) is to quote with single backtick '`'
	character so it is formatted as monospaced and rendered literally.

	man: Indent peers counters
	In man page output the peers counters (resends, error, ...) was at the
	same level as 'peers' command itself - this can be a bit confusing.

	A2X manpage use ';;' format for similar problem (<destination_file> description
	of "chunked, htmlhelp", "epub", "xhtml"), so use ';;' too.

	man: Move debug description to better place
	Debug option was added to the end of options - so close to ticket
	options. Debug is really global option so move it up.

2022-11-14  Dejan Muhamedagic  <dejanmm@fastmail.fm>

	Merge pull request #120 from jfriesse/enhance-config-file-error-msg
	Enhance config file error msg

2022-11-09  Jan Friesse  <jfriesse@redhat.com>

	test: Add test for unknown/unexpected keyword
	... and improve transport test to check if error message contains value
	of transport.

	config: Include protocol in error message
	Error message hasn't included protocol value itself. Patch adds it into
	error message.

	config: Include keyword in error message
	Error message for unknown and unexpected keyword hasn't included the
	keyword itself.

	Patch adds value of keyword into error message.

2022-09-30  Dejan Muhamedagic  <dejanmm@fastmail.fm>

	Merge pull request #119 from jfriesse/remove-systemd-unit-alias
	unit file: Remove Alias directive

2022-09-27  Jan Friesse  <jfriesse@redhat.com>

	unit file: Remove Alias directive
	Recent change in systemd made imposible to enable booth@.service any
	longer - more details in BZ
	https://bugzilla.redhat.com/show_bug.cgi?id=2128998. Solution is to
	delete Alias directive.

2022-08-15  Dejan Muhamedagic  <dejanmm@fastmail.fm>

	Merge pull request #118 from jfriesse/remove-autogen-warnings
	configure: Modernize configure.ac a bit

2022-07-26  Jan Friesse  <jfriesse@redhat.com>

	configure: Modernize configure.ac a bit
	... to make 2.71 happy. Also increase minimum version to 2.69 (10 years
	old version so should be compatible enough).

2022-07-24  Dejan Muhamedagic  <dejanmm@fastmail.fm>

	Merge pull request #117 from jfriesse/fix-malloc-warning
	ticket: Fix compiler warning

2022-07-20  Jan Friesse  <jfriesse@redhat.com>

	ticket: Fix compiler warning
	malloc expects size_t typed variable so change `alloc` to size_t.

2022-07-04  Dejan Muhamedagic  <dejanmm@fastmail.fm>

	Merge pull request #116 from ClusterLabs/fix-upstream-spec
	rpm: use new package name for pacemaker devel on opensuse

	Merge pull request #115 from jfriesse/make-authfile-work-again
	Revert "Refactor: main: substitute is_auth_req macro"

2022-07-04  Fabio M. Di Nitto  <fdinitto@redhat.com>

	rpm: use new package name for pacemaker devel on opensuse

2022-07-04  Jan Friesse  <jfriesse@redhat.com>

	Revert "Refactor: main: substitute is_auth_req macro"
	This reverts commit da79b8ba28ad4837a0fee13e5f8fb6f89fe0e24c.

	authfile != authkey

2022-05-13  Dejan Muhamedagic  <dejanmm@fastmail.fm>

	Merge pull request #112 from jfriesse/signal-safety
	Signal safety

	Merge pull request #111 from jfriesse/enhance-wait-for-lock-file
	test: Enhance wait_for_lock_file

	Merge pull request #110 from dmuhamedagic/bashisms
	fix bashisms (use printf instead of echo)

	Merge pull request #113 from jfriesse/docs-describe-debug
	doc: Describe debug config file option

2022-05-10  Jan Friesse  <jfriesse@redhat.com>

	doc: Describe debug config file option

2022-05-09  Jan Friesse  <jfriesse@redhat.com>

	handler: Use only signal-safe functions
	`ignore_rest` function is using only one signal unsafe function (log) -
	other (signal, kill) are signal-safe.

	To make `ignore_rest` signal-safe call of log_info is moved (and huge
	comment is added).

	main: Use only signal-safe functions
	Previously signal unsafe functions were used (for example qb_log, exit,
	...) which may result in deadlock or incorrect behavior.

	Patch tries to solve signal handling in main.c by using using method of
	setting variable (signal safe) and handling variable outside of signal
	handler in loop function after the poll function returns.

	Maximum poll timeout is set to minimum of POLL_TIMEOUT and user
	configured timeout, so it is always at maximum POLL_TIMEOUT = 100 ms so
	signal handling seems to be responsive enough. Other method may be to
	have information fd, but such solution seems to be a bit overkill.

2022-04-11  Jan Friesse  <jfriesse@redhat.com>

	test: Enhance wait_for_lock_file
	Test of file existence and size > 0 seems to be not reliable enough so
	mimic behavior of get_daemon_pid_from_lock_file.

2022-04-09  Dejan Muhamedagic  <dejan@hello-penguin.com>

	fix bashisms (use printf instead of echo)

2021-07-30  Dejan Muhamedagic  <dejanmm@fastmail.fm>

	Merge pull request #106 from ddstreet/dont_mlockall_if_setrlimit_fails
	Don't lock all current and future memory if can't increase memlock rl…

2021-05-19  Dejan Muhamedagic  <dejanmm@fastmail.fm>

	Merge pull request #107 from jfriesse/remove-deprecated-func
	config: Remove deprecated net functions

2021-04-26  Jan Friesse  <jfriesse@redhat.com>

	config: Remove deprecated net functions
	gethostbyname and inet_ntoa are deprecated and shouldn't be used. Also
	gethostbyname is unable to handle ipv6.

	Replace gethostbyname by getaddrinfo.

	inet_ntoa is replaced by inet_ntop.

2021-03-11  Dan Streetman  <ddstreet@canonical.com>

	Don't lock all current and future memory if can't increase memlock rlimit
	If we fail to increase our RLIMIT_MEMLOCK, then locking all our current
	and future memory is extremely dangerous; once our memory use reaches
	our RLIMIT_MEMLOCK, memory allocations will start failing, very likely
	leading to our entire process crashing.

	This can happen if we aren't a privileged process, for example if
	running as non-root user, or inside an unprivileged container.

2021-03-09  Dejan Muhamedagic  <dejanmm@fastmail.fm>

	Merge pull request #105 from ClusterLabs/misc-fixes
	misc build minor fixes and cleanup

2021-03-09  Fabio M. Di Nitto  <fdinitto@redhat.com>

	configure: drop unnecessary check and define

2021-03-08  Fabio M. Di Nitto  <fdinitto@redhat.com>

	configure: move exec_prefix sanitizer closer to prefix
	no functional change, just group functional tests together

	configure: drop dead code
	prefix is sanitized already at the top of configure.ac to /usr,
	hence the second instance can never hit.

	configure: drop unnecessary macro

	configure: use PKG_CONFIG to detect pacemaker user/group

	configure: use resource-agents pkg-config info to determine ocfdir
	and allow manual override --with-ocfdir.

	Recent version of resource-agents ship resource-agents.pc, containing
	build information on ocfrootdir. Use that as authoritative information.

	pacemaker and other projects have already switched to use it.

	configure: add BOOTH_PKG_CHECK_VAR macro to wrap PKG_CHECK_VAR
	and allow definition of defaults if respective value from .pc file
	is not found

	and add backward PKG_CHECK_VAR compatibility macro for older versions
	of pkg-config

	configure: detect and init pkg-config with proper macro
	this also allows to use PKG_CONFIG_* macros immediately
	in conditional calls

	configure: Simplify libqb detection when libqb is not installed in standard paths
	AC_CHECK_LIBS generally uses libraries in standard path and requires
	a bit of magic to override when lib is not in usual locations.

	Drop the AC_CHECK_LIBS bit and use directly PKG_CONFIG to detect libqb

2020-11-13  Dejan Muhamedagic  <dejanmm@fastmail.fm>

	Merge pull request #104 from ClusterLabs/ci-fixes
	[build] ship booth.pc with basic booth build information for downstre…

2020-11-12  Fabio M. Di Nitto  <fdinitto@redhat.com>

	[build] ship booth.pc with basic booth build information for downstream packages to use
	some packages, such as pcs, needs to have specific information about booth
	installation paths in order to configure booth properly.

	in a similar fashion as systemd (shipping systemd.pc), add similar feature to booth.

	In general this change does NOT affect any downstream distributions as they all
	use pretty much standard paths, but it makes it a ton easier to build / install
	and test booth in CI where all package are installed in non-standard paths.

2020-10-07  Dejan Muhamedagic  <dejanmm@fastmail.fm>

	Merge pull request #103 from jfriesse/change-spec-naming-scheme
	booth.spec: Change naming scheme for upgrades

	Merge pull request #101 from jfriesse/iproute-compat
	test: Add compatibility with iproute ss command

	Merge pull request #102 from jfriesse/build-fixes
	Build fixes

2020-10-01  Jan Friesse  <jfriesse@redhat.com>

	booth.spec: Change naming scheme for upgrades
	Previously the release was set to 1.$numcomm.$sha1.$dirty.$dist.
	This is suboptimal for downstream, because when release increases then
	downstream version is always newer no matter what numcomm is. So when CI
	tries to install upstream version it won't get installed.

	Proposed solution is to use $numcomm.$release.$sha1.$dirty.git.$dist so
	numcomm is now second most important (version is first one) making any
	pushed version bigger than any downstream version.

	This scheme also works with rpmdev-bumpspec because release is now
	global variable (rpmdev-bumpspec will increase "%global release" rather
	than the release field).

	boot.spec.in: Package html files when generated

	build: Fix building of html docs with asciidoc
	asciidoc doesn't accept --destination-dir so -o is used instead.

	git-version-gen: Use fallback for git-archive
	When git-archive tarball is used git-version-gen sets version to UNKNOWN
	even when fallback is used.

	Patch makes sure to use fallback in such case.

	configure: Make sure without-html_man works
	AC_ARG_WITH always calls the action-if-given no matter if --with or
	--without is used. Previously we were setting with_html_man to yes in
	this action so --without was behaving same way as --with.

	Solution is to remove this action and let AC_ARG_WITH do its job and set
	with_html_man correctly to yes if --with-html_man is provided, no if
	--without-html_man is provided and not set at all if argument is not
	used.

2020-09-29  Jan Friesse  <jfriesse@redhat.com>

	test: Add compatibility with iproute ss command
	ensure_boothd_not_running is now exectured only when single instance is
	used, but if so, it requires netstat command. Netstat is deprecated for
	some time and it is slowly disappearing from distributions, so add
	support for iproute ss command.

	Parameters for both ss and netstat are same, but sadly output differs so
	both netstat and ss output is matched.

2020-09-22  Dejan Muhamedagic  <dejanmm@fastmail.fm>

	Merge pull request #100 from aleksei-burlakov/fix-here-string-delimiter
	test: fix the delimiter in the here-string

2020-09-18  Aleksei Burlakov  <aburlakov@suse.com>

	test: fix the delimiter in the here-string
	bash 4.4 no longer splits the expansion of here-strings, (see the CHANGES
	file of the bash-4.4.beta).

2020-07-14  Dejan Muhamedagic  <dejanmm@fastmail.fm>

	Merge pull request #98 from jfriesse/coverity-fixes
	Fix problems found by coverity

2020-07-09  Dejan Muhamedagic  <dejanmm@fastmail.fm>

	Merge pull request #97 from jfriesse/git-version-gen-rpm
	Make use of git-version-gen and improve RPM building

2020-07-07  Jan Friesse  <jfriesse@redhat.com>

	build: Remove bashisms
	Tested by checkbashisms scripts (which seems to work on Makefiles too)
	and running full build (autoreconf -fvi && ./configure --without-glue &&
	make && make rpm) using dash as /bin/sh and login shell for user.

	booth.spec: Add fedora compatibility provides

	build: Add option to enable tests during rpmbuild
	... and substitute configured value into booth.spec.

	build: Substitute hauser and haclient in RPM
	Value of configure hauser and haclient is substitued in booth.spec.

	build: Substitute python dependency in RPM
	Python2 or Python3 dependency is based on configure parameters
	instead of guessing.

	Also __python3 macro is used where available.

	build: Substitute glue dependency in RPM
	Glue dependency is based on configure parameters instead of guessing.

	build: Substitute asciidoc or asciidoctor for RPM
	Depending on configured asciidoc generator final booth.spec has
	substituted correct package requirement.

	build: Rework build of RPM
	Idea is to use rpm (and srpm) target in Makefile.am to build RPM.
	version-gen is used to generate proper version from git or tarball
	version. Also build_html is replaced in final spec file from configured
	value.

	build: Use git-version-gen
	Idea behind this patch is to allow using git-version-gen script instead
	of hand versioning.

	git-version-gen is script which is able to use information from git
	repository, file generated during make dist or gitattributes file
	substituted during git-archive and pass it to autoconf as a main
	version of package.

	This simplifies releasing new version of package (only changing of fallback
	version and making git tag is neede) and allows to build
	non-released git snapshot with proper version number.

	Similar method is used across all of the ClusterLabs projects so now it
	is also in booth.

2020-07-02  Jan Friesse  <jfriesse@redhat.com>

	transport: Check fcntl return value

	transport: setsockopt failures are not critical
	Setting of SO_RCVBUF and TCP_NODELAY seems to be non-critical, so mark
	them so by ignoring setsockopt return value.

	pacemaker: Change rv handling of pcmk_get_attr
	... to be more similar as pcmk_load_ticket so use pipe_rv for pipe
	operations and use bitwise or for return value.

	pacemaker: Express intention about logical or
	Coverity shows warning about logical or on rv || EINVAL value. This
	expression is not bug (and it is quite easy to read what is intended),
	but may make sense to be more explicit using ternary
	operator.

	Also return EINVAL rather than -EINVAL, because pclose would return
	positive errno value.

	main: mkdir failure is not critical
	Ignore mkdir error, because it is not critical and checked properly
	later when opening file.

2020-06-30  Jan Friesse  <jfriesse@redhat.com>

	configure: Always let automake set python vars
	Some vars like PYTHON_VERSION was unset when PYTHON is passed to
	configure script.

	Solution is to let automake fill them.

	build: Delete cov directory on clean
	cov directory is created by coverity target.

	build: Make sure tarball contains all needed files

	build: Remove unneeded OS detection section
	Booth is not using any of detected values and it is also not linking any
	shared library so extra compiler flags are not needed too.

	Instead use standard AC_USE_SYSTEM_EXTENSIONS which defines required
	macros. Also make sure b_config.h is always included as a first header so
	defined system extensions have effect.

	build: Make generating of HTML man work
	AM_CONDITIONAL was defined too soon, so generating of HTML version of
	man pages hasn't worked.

	Solution is to move AM_CONDITIONAL to right place. Also because HTML
	generating wasn't working, it is now disabled by default and one can
	enable it by passing --with-html_man to configure script.

2020-06-17  Dejan Muhamedagic  <dejanmm@fastmail.fm>

	Merge pull request #95 from jfriesse/parallel-tests
	tests: Allow parallel running of tests

2020-06-15  Jan Friesse  <jfriesse@redhat.com>

	tests: Allow parallel running of tests
	To allow running multiple instances of tests in parallel only few
	changes were needed:
	- Do not killall boothd on start
	- Do not call ensure_boothd_not_running and rely on cleanup mechanism of
	tests itself (works quite well). Another advantage is not rely on
	(deprecated) netstat and perl one-liner.
	- Generate "unique" port for each of the instance (based on PID)

	This patch is (mostly) to allow building rpm (check section) on both i686
	and x86_64 when only one physical machine is used (example reproducer is
	Fedora Koji) for both architectures.

	I was also thinking about having unique port for each test case where
	working_config is needed, but such solution was more collisions prone
	(and more invasive) than one port per tests instance.

2020-06-13  Dejan Muhamedagic  <dejanmm@fastmail.fm>

	Merge pull request #94 from jfriesse/pcmk-return-code
	pacemaker: Handle updated exit code of crm_ticket

	Merge pull request #93 from ClusterLabs/pcmk-libs-not-needed
	build: Do not link with pcmk libraries

2020-06-08  Jan Friesse  <jfriesse@redhat.com>

	pacemaker: Handle updated exit code of crm_ticket
	crm_ticket included since Pacemaker version 2.0.0-rc2 doesn't return
	EPERM (1) error code any longer when ticket is updated without using
	--force. Instead new value CRM_EX_INSUFFICIENT_PRIV (4) is used.

	This return value is used in the test_atomicity function which is
	failing with new enough Pacemaker.

	Solution is to check also for return code 4.

	Also previously when unexpected code is returned, log contained full
	return value as returned by system call. This is not very readable so
	use only exit status (WEXITSTATUS) instead.

2020-06-03  Jan Friesse  <jfriesse@redhat.com>

	build: Do not link with pcmk libraries
	Patch 4205de05fe337d1b1127fae302e6e6c2f0613ccf introduced better way to
	check for pacemaker headers but also usage of PCMK_LIBS when linking
	boothd.

	This is not needed, because boothd uses just crm/services.h header file
	for inclusion of OCF return codes, so patch removes the use of PCMK_LIBS.

2020-05-31  Dejan Muhamedagic  <dejanmm@fastmail.fm>

	Merge pull request #92 from jfriesse/signal-handlers
	main: Delete lockfile when signal arrive too early

2020-05-26  Jan Friesse  <jfriesse@redhat.com>

	main: Delete lockfile when signal arrive too early
	Previously, if signal was sent in between lock file creation and
	signal handler registration, booth daemon exited without deleting lock
	file.

	I was able to reproduce this behaviour very rarely (and only
	on s390 architecture) when running test suite. Reliable reproducer was
	to put sleep call after call of create_lockfile and before call of
	signal function,

	Proposed solution is to move signal and atexit call before
	create_lockfile.

2020-05-22  Dejan Muhamedagic  <dejanmm@fastmail.fm>

	Merge pull request #91 from jfriesse/accept-long-config-lock-fnames
	main: Accept longer config and lock file names

	Merge pull request #90 from jfriesse/debian-tests
	tests: Make test work for Debian systems

	Merge pull request #89 from jfriesse/distcheck
	Make "make distcheck" work

	Merge pull request #84 from vvidic/gcc-10-packed
	Fix gcc-10 warnings for packed struct members

2020-05-15  Jan Friesse  <jfriesse@redhat.com>

	main: Accept longer config and lock file names
	Also fix tests to reflect this change.

	tests: Make test work for Debian systems
	Debian is storing 127.0.1.1 address into /etc/hosts for local hostname.
	Booth function find_myself is unable to find such address and fails.

	Solution is based on using connect on udp socket and reading local
	address.

	docs: Fix description of how to run python tests

	build: Make make distcheck with asciidoctor

2020-05-15  Fabio M. Di Nitto  <fdinitto@redhat.com>

	build: fix make distcheck
	when building with make distcheck, we are performing an out of tree
	build with non standard prefix and non standard exec-prefix,
	that will run the test suite and perform an install/deinstall test.
	Everything needs to work based on those non standard paths and
	DESTDIR is not defined / used.

	- distribute all files required to build the source
	- clean more temporary build files
	- drop SOCKETDIR completely as it´s not used anywhere
	- make ocfdir non-standard prefix-aware
	- build test suite to deal with non-standard prefixes
	- adjust man page generations to use builddir
	  (untested with asciidoctor, not available in Fedora)
	- fix some spacing here and there to make things look nicer
	  (damn ocd)
	- update .gitignore

2020-05-10  Dejan Muhamedagic  <dejanmm@fastmail.fm>

	Merge pull request #87 from jfriesse/test-higly-loaded-machine
	Test running on highly loaded machine - false negatives

	Merge pull request #86 from jfriesse/runtest-root
	Allow running tests as a root

	Merge pull request #85 from jfriesse/autoconf-fixes
	Autoconf fixes

2020-05-07  Jan Friesse  <jfriesse@redhat.com>

	test: Actively wait for lock file create/delete
	Testing on highly loaded machine may fail on lock file being
	created or deleted later than expected. Proposed solution is
	implementation of active waiting (with timeout) until lock file
	is created/deleted.

2020-05-06  Jan Friesse  <jfriesse@redhat.com>

	test: Enlarge timeout for boothd exit
	Wait for end of process for short time when daemonize expected
	and for longer time when exit is expected - to avoid false
	negatives for overloaded machines.

2020-05-04  Fabio M. Di Nitto  <fdinitto@redhat.com>

	build: allow to override path to python without failing version checks
	https://www.gnu.org/software/automake/manual/html_node/Python.html

	If we configure with: ./configure PYTHON=/usr/bin/python2
	the current call to AM_PATH_PYTHON will fail to detect version >= 3.3

	As explained in the AM_PATH_PYTHON documentation:

	"If the PYTHON variable is set when AM_PATH_PYTHON is called,
	 then that will be the only Python interpreter that is tried."

	and AM_PATH_PYTHON will fail with error, without moving to
	action-if-not-found, because it is found, but in the incorrect version.

	Reviewed-by: Jan Pokorný <jpokorny@redhat.com>

	build: use pkg-config way to detect and use pacemaker header files
	If pacemaker is built/installed in non-standard location, the current
	checks and includes will fail.

	Also, pay the respective attention to .travis.yml.

	Reviewed-by: Jan Pokorný <jpokorny@redhat.com>

2020-05-04  Jan Friesse  <jfriesse@redhat.com>

	test: Allow test running as a root
	The main problem was hidden in inability of booth daemon to delete its
	lock file because of directory permisions.

	Tests creates temp directory as a root but booth daemon drops
	privilegies right after creating the lock file.
	So booth daemon can ftruncate lock file, but not delete it.

	There seems to be two possible solutions:
	- Fix test so empty lock file is considered as deleted lock file
	- Change permissions of created temp directory

	This patch implements later solution.

2020-05-04  Jan Pokorný  <jpokorny@redhat.com>

	Test: *.py: superprivileged user can run the tests when opted in

2020-04-21  Dejan Muhamedagic  <dejanmm@fastmail.fm>

	Merge pull request #83 from vvidic/gcc-10-extern
	Fix gcc-10 warnings for multiple definition of pcmk_handler

2020-04-18  Valentin Vidic  <vvidic@valentin-vidic.from.hr>

	Fix gcc-10 warnings for multiple definition of pcmk_handler
	/usr/bin/ld: boothd-ticket.o:./src/pacemaker.h:35: multiple definition of `pcmk_handler'; boothd-main.o:./src/pacemaker.h:35: first defined here
	/usr/bin/ld: boothd-pacemaker.o:./src/pacemaker.h:35: multiple definition of `pcmk_handler'; boothd-main.o:./src/pacemaker.h:35: first defined here
	/usr/bin/ld: boothd-handler.o:./src/pacemaker.h:35: multiple definition of `pcmk_handler'; boothd-main.o:./src/pacemaker.h:35: first defined here
	/usr/bin/ld: boothd-attr.o:./src/pacemaker.h:35: multiple definition of `pcmk_handler'; boothd-main.o:./src/pacemaker.h:35: first defined here

	Fix gcc-10 warnings for packed struct members
	transport.c: In function ‘booth_tcp_open’:
	transport.c:656:42: warning: taking address of packed member of ‘struct booth_site’ may result in an unaligned pointer value [-Waddress-of-packed-member]
	  656 |  rv = connect_nonb(s, (struct sockaddr *)&to->sa6, to->saddrlen, 10);
	      |                                          ^~~~~~~~
	transport.c: In function ‘message_recv’:
	transport.c:1108:7: warning: taking address of packed member of ‘struct booth_site’ may result in an unaligned pointer value [-Waddress-of-packed-member]
	 1108 |  time(&source->last_recv);
	      |       ^~~~~~~~~~~~~~~~~~
	main.c: In function ‘format_peers’:
	main.c:230:14: warning: taking address of packed member of ‘struct booth_site’ may result in an unaligned pointer value [-Waddress-of-packed-member]
	  230 |    localtime(&s->last_recv));
	      |              ^~~~~~~~~~~~~
	attr.c: In function ‘store_geo_attr’:
	attr.c:282:13: warning: taking address of packed member of ‘struct geo_attr’ may result in an unaligned pointer value [-Waddress-of-packed-member]
	  282 |    get_time(&a->update_ts);
	      |             ^~~~~~~~~~~~~
	timer.h:43:48: note: in definition of macro ‘get_time’
	   43 | #define get_time(p) clock_gettime(BOOTH_CLOCK, p)
	      |                                                ^
	attr.c: In function ‘append_attr’:
	attr.c:337:18: warning: taking address of packed member of ‘struct geo_attr’ may result in an unaligned pointer value [-Waddress-of-packed-member]
	  337 |  if (is_time_set(&a->update_ts)) {
	      |                  ^~~~~~~~~~~~~
	attr.c:338:16: warning: taking address of packed member of ‘struct geo_attr’ may result in an unaligned pointer value [-Waddress-of-packed-member]
	  338 |   ts = wall_ts(&a->update_ts);
	      |                ^~~~~~~~~~~~~

2020-01-21  Dejan Muhamedagic  <dejanmm@fastmail.fm>

	Merge pull request #81 from vvidic/pkgconfig
	Use pkg-config to configure libxml-2.0

2020-01-20  Valentin Vidic  <vvidic@valentin-vidic.from.hr>

	Use pkg-config to configure libxml-2.0
	https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=949057

2019-10-06  Dejan Muhamedagic  <dejanmm@fastmail.fm>

	Merge pull request #78 from jnpkrn/fix-asciidoctor
	docs: boothd.8: fix runaway formatting for what's config file snippet

2019-09-30  Jan Pokorný  <jpokorny@redhat.com>

	docs: boothd.8: fix runaway formatting for what's config file snippet
	This was (likely) exposed with asciidoctor being updated to v2.0.0+
	resulting in this "visual" (as in actually viewing the man page) diff
	before vs. after:

	> -       ticket="manual-ticket"
	> -           [...]
	> -           mode = manual
	> -           [...]
	> +       ticket="manual-ticket" [...] mode = manual [...]

	Marking that part as a literal block (in an established manner)
	restores the sanity.

2019-01-12  Dejan Muhamedagic  <dejanmm@fastmail.fm>

	Merge pull request #76 from jnpkrn/static-analysis
	Various fixes based on static analysis inputs

2019-01-09  Jan Pokorný  <jpokorny@redhat.com>

	Low: handler: fix spurious warning on alleged "fall-through" in switch
	(just noting that GCC 8.2.1 stayed cool, but the problem was elsewhere)

	Low: main: fix hypothetical file path double traversal discrepancy
	Now we check retrospectively once the file held firmly, i.e.,, there's
	a single path traversal only, just in case.

	Since fstat appears just as standards compliant as mere stat, there's
	nothing (not even lightness on resources/system limits since opening
	the file is on the likely, happy path).precluding such an arrangement.

	Discovered-by: static analysis/Coverity

	Med: attr: fix derefence of unspecified value pointer
	Jumping to out_close out of (site->type == ARBITRATOR) condition means:
	-  site is not NULL at that point
	-  tpt pointer hasn't been initialized, yet
	-> segfault/read-write access to inappropriate data (depending on the
	   state the stack was in, most probably the former)

	Discovered-by: static analysis/Coverity

2019-01-08  Dejan Muhamedagic  <dejanmm@fastmail.fm>

	Merge pull request #75 from jnpkrn/docs
	docs: fix an oversight in Makefile.am, stop gitignoring a tracked file

2019-01-08  Jan Pokorný  <jpokorny@redhat.com>

	docs: fix an oversight in Makefile.am, stop gitignoring a tracked file
	The former was introduced with Asciidoctor support introduction
	(c40e3b0a), the latter was mistaken from beginning (5a53018a), but
	it didn't matter since docs/boothd.8.txt had already been tracked
	by then -- where it may matter, though, are operations like diff'ing.

2018-10-12  Dejan Muhamedagic  <dejanmm@fastmail.fm>

	Merge pull request #74 from vvidic/fix-conf-clean
	Fix cleanup of service.in files

	Merge pull request #73 from vvidic/spelling
	Fix documentation wording

2018-10-11  Valentin Vidic  <Valentin.Vidic@CARNet.hr>

	Fix cleanup of service.in files
	Removing the service.in files breaks the next build attempt.

	Fix documentation wording
	Replace 'allows to' with 'allows one to'.

2018-08-14  Dejan Muhamedagic  <dejanmm@fastmail.fm>

	Merge pull request #72 from jnpkrn/maint-shell-scripts-polishing
	Maint: shell scripts polishing

2018-07-19  Jan Pokorný  <jpokorny@redhat.com>

	maint: ocf + script: eliminate some false positives with ShellCheck
	In particular, prevent sed's character classes to be confused with
	array-like variable access through specified index, which demonstrates
	why it's better to have the ${variable} "enbraced".

	maint: test: polish live_test.sh
	- from issues found with ShellCheck, fix those marked as important
	- suppress some ShellCheck issues, mostly related to the fact that
	  some ticket-related variables are established dynamically,
	  also drop a never-used local variable (see commits 74a3f5c + 4136682)
	  and another global one that was used but consequently ditched
	  (see commits 08f56bd + d952b27)
	- fix s/boots not uptodate/booths not up-to-date/ spelling
	- fix whitespace issues

	maint: lsb: polish arbitrator's initscript, fix condrestart
	- previously, condrestart/try-restart (regardless whether "multi-tenant"
	  or not) would not work as expected
	- make it apparent the script is in fact not fully LSB-compliant
	- suppress some ShellCheck issues, mostly related to the fact that
	  some variables are injected based on "boothd status" invocation,
	  also drop an unused variable (see commits 8732542 + 054dafa
	  [until which it might have been useful] + 9e6359f)
	- fix whitespace issues + normalize indentation of "case - esac"

2018-07-14  Philipp Marek  <phmarek@users.noreply.github.com>

	Merge pull request #71 from jnpkrn/test-python3+refactor
	Test: python3 support + slight refactorting/cleanup

2018-07-13  Jan Pokorný  <jpokorny@redhat.com>

	build: spec: add support/conditionalizing for Python 3

	build: spec: -test subpackage actually Requires gdb and python-expect

	build: spec: %check scriptlet actually BuildRequires python

	build: spec: get rid of redundant defattr
	References (first one provides some context):
	https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/KEO7AX3JXR2TY6OVL4M7HDISZ6YIJNKU/#2UFET77NHMJTG4NA2ECRVH2KO3W56ZWD
	https://github.com/rpm-software-management/rpm/commit/47ea5da7d
	(~2004, rpm-4.4)

	Refactor: fix "strncpy may miss trailing null byte" warnings of GCC 8.1
	Verbatim warning:
	> ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]

	test: unit-test.py: daemon will not stay in foreground with -D anymore
	Commit a66ac33 missed this impact (it may have missed impact on
	test/boothrunner.py but it appears to be fine either way).

	test: avoid dangerous mutable/sticky default value
	Incl. slight refactoring towards more frequent use of tuples where
	advantage of lists are dubious.

	test: drop/comment out superfluous imports

	test: drop underqualified identifier in unittest's 2.6 compat "polyfill"
	Specifically, in supplemented unittest.TestCase.assertRegexpMatches
	method.  In Python 2.7's implementation, there's no re.MULTILINE
	modifier at that very place, either.

	Not sure what the original purpose of introducing that with c1c47f5 was.

	build: parametrize Python invocations in the shebangs
	Consequently, there's no reason to have the affected files marked as
	executable (processing the files by the means of AC_CONFIG_FILES will
	get rid of any such permission bits, anyway), but at the very least,
	test/runtests.py needs to be set executable afterwards so as no to
	cause failures with the current "make check" arrangement that invokes
	TESTS subtargets directly (i.e. no extension-based LOG_COMPILER set).

	test: make Python files supported _also_ with Python 3.3+
	- use "print" like a function rather than a statement
	  . where implicit newline is to be suppressed, don't do that
	    and rather strip it from the string to be printed instead
	- use 2+3 compatible convention for parametrizing exceptions
	- Python 3 doesn't recognize "basestring" class, and at the place
	  of use (pre Python 2.7 only), unicode string is really not expected
	  (also re.UNICODE flag is not used...)
	- Python 3 doesn't recognize "xrange" function, but the surrounding
	  code can be reasonably simplified using "enumerate" function
	- arrange dict treatment in a compatible way:
	  . d.has_key(k) -> k in d
	  . d.iteritems() -> custom "iter_items", always efficient wrapper
	  . d.iterkeys(), here incl. lazy mapping and filtering
	    -> rewrite while retaining laziness
	  . optimize UT.merge_dicts in script/unit-test.py along
	- also in three instances, deal with string/uninterpreted bytes proper
	  dichotomy introduced in Python 3, and related to that, "string"
	  module only supports "ascii_lowercase" attribute in Python 3
	  (as opposed to system-specific plain "lowercase" one)

	Note that script/unit-test.py has a pre-existing issue (regardless
	of which Python version interpreter is used), so at least document
	that in the header for now.

2018-07-12  Jan Pokorný  <jpokorny@redhat.com>

	test: do not mix tabs with spaces in Python code
	Beside being matter of a good style, it's also forbidden inside
	a single, non-delimited block in Python 3.

	test: remove superfluous shebangs for import-only modules
	Consequently, there's no reason to have the affected files marked as
	executable.

2018-06-27  Dejan Muhamedagic  <dejanmm@fastmail.fm>

	Merge pull request #70 from jnpkrn/maint-minor-cleanups
	maint: minor cleanups

2018-06-26  Jan Pokorný  <jpokorny@redhat.com>

	maint: fix typos introduced in 4bb484a

	maint: fix thinko in .gitignore introduced in 5a457ee
	Fortunately, it didn't pose an issue when the falsely ignored file
	received modifications (ef62b8c).

2018-05-02  Dejan Muhamedagic  <dejanmm@fastmail.fm>

	Merge pull request #69 from ChrisKowalczyk/fix_asciidoc_build
	Fix asciidoc build

2018-05-02  Chris Kowalczyk  <ckowalczyk@suse.com>

	Fix asciidoc build

2018-04-17  Dejan Muhamedagic  <dejanmm@fastmail.fm>

	Merge pull request #67 from aerostitch/move_out_of_asciidoc
	Move out of asciidoc

2018-04-16  Joseph Herlant  <herlantj@gmail.com>

	Update Makefile.am to allow asciidoctor integration

2018-04-13  Joseph Herlant  <herlantj@gmail.com>

	Add support for asciidoctor for man pages and html docs

2018-04-12  Joseph Herlant  <herlantj@gmail.com>

	Fix malformed man title

2018-04-04  Dejan Muhamedagic  <dejanmm@fastmail.fm>

	Merge pull request #66 from inouekazu/conf
	Low: conf: Add Restart option to booth-arbitrator.service

2018-04-02  Kazunori INOUE  <inouekazu@intellilink.co.jp>

	Low: conf: Add Restart option to booth-arbitrator.service

2018-02-01  Dejan Muhamedagic  <dejanmm@fastmail.fm>

	Merge pull request #65 from nick-wang/firewalld
	Replace SuSEFirewall2 by firewalld.

2018-01-26  Nick Wang  <nwang@suse.com>

	Replace SuSEFirewall2 by firewalld.

2017-11-23  Dejan Muhamedagic  <dejanmm@fastmail.fm>

	Merge pull request #64 from ChrisKowalczyk/feature_add_manual_mode_to_tickets
	Feature: add manual mode to booth tickets

2017-11-23  Chris Kowalczyk  <ckowalczyk@suse.com>

	Refactoring after review comments

2017-11-06  Chris Kowalczyk  <ckowalczyk@suse.com>

	Handle multi-leader situation for manual tickets. Added manual tickets to Life Tests framework

2017-09-21  Chris Kowalczyk  <ckowalczyk@suse.com>

	Updates after code review

2017-09-05  Chris Kowalczyk  <ckowalczyk@suse.com>

	Updates after review

	Fixed typo in help message

2017-08-25  Chris Kowalczyk  <ckowalczyk@suse.com>

	Feature: add manual mode to booth tickets

2017-07-21  Dejan Muhamedagic  <dejanmm@fastmail.fm>

	Merge pull request #63 from ChrisKowalczyk/fix_disable_stderr_for_daemon
	Disable stderr for daemon mode

2017-07-19  Chris Kowalczyk  <ckowalczyk@suse.com>

	Booth Daemon Arguments: Disable stderr for daemon mode

2017-07-17  Dejan Muhamedagic  <dejanmm@fastmail.fm>

	Merge pull request #62 from ChrisKowalczyk/fix_enable_debugging_without_daemonize
	Booth Daemon Arguments: disable foreground for D flag

	Merge pull request #58 from ChrisKowalczyk/fix_booth_grant_command_grants_to_random_sites
	Determine the correct address of a local site

2017-07-13  Chris Kowalczyk  <ckowalczyk@suse.com>

	Booth Daemon Arguments: Enable stderr for foregound mode

	Booth Daemon Arguments: Added tests for DS and S flags

	Booth Daemon Arguments: disable foreground for D flag

2017-06-26  Dejan Muhamedagic  <dejanmm@fastmail.fm>

	Merge pull request #59 from vvidic/gcc-7
	Fix GCC-7 warning on buffer size

2017-06-24  Valentin Vidić  <vvidic@valentin-vidic.from.hr>

	Fix GCC-7 warning on buffer size
	ticket.c: In function ‘process_tickets’:
	ticket.c:470:44: warning: ‘%s’ directive output may be truncated writing up to 63 bytes into a region of size 53 [-Wformat-truncation=]
	   snprintf(buff, sizeof(buff), "granted to %s",
	                                            ^~
	ticket.c:470:3: note: ‘snprintf’ output between 12 and 75 bytes into a destination of size 64
	   snprintf(buff, sizeof(buff), "granted to %s",
	   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	    site_string(tk->leader));
	    ~~~~~~~~~~~~~~~~~~~~~~~~

2017-06-21  Chris Kowalczyk  <ckowalczyk@suse.com>

	Find the correct address of a local site

2017-06-19  Dejan Muhamedagic  <dejanmm@fastmail.fm>

	Merge pull request #56 from ChrisKowalczyk/fix_build_add_working_directory
	Build: create and set working directory

2017-06-01  Dejan Muhamedagic  <dejanmm@fastmail.fm>

	Merge pull request #57 from ChrisKowalczyk/fix_config_handle_hostnames_in_conf_file
	Configuration: handle hostnames in booth.conf file

2017-05-31  Chris Kowalczyk  <ckowalczyk@suse.com>

	Change comment style and indentation

	Config: handle hostnames in booth.conf file

2017-05-29  Chris Kowalczyk  <ckowalczyk@suse.com>

	Build: add correct permissions to the folders

2017-05-24  Chris Kowalczyk  <ckowalczyk@suse.com>

	Build: create and set working directory

2016-09-21  Dejan Muhamedagic  <dejanmm@fastmail.fm>

	Merge pull request #51 from jnpkrn/fix-travis-loopback
	CI: travis: workaround 127.0.1.1 not assigned with loopback

	Merge pull request #48 from liu4480/master
	typo fix: there is no %{S:2} defined in booth.spec

2016-09-14  Jan Pokorný  <jpokorny@redhat.com>

	CI: travis: workaround 127.0.1.1 not assigned with loopback
	This is so as to counterweight unfortunate change
	https://github.com/travis-ci/travis-cookbooks/commit/6c575d5d55c08e3a0c046dc7de2aa5d5b38e0b63
	that made proper hostnames be mapped from 127.0.1.1 address rather than
	127.0.0.1 (properly assigned to loopback interface), hence (likely)
	caused "hostname -i" return that other address that is normally not
	assigned to loopback (and hence booth cannot identify "itself" within
	configured sites, leading to spurious test suite failure).

2016-08-08  Bin Liu  <bliu@suse.com>

	typo fix: there is no %{S:2} defined in booth.spec
	In line 140 of booth.spec, there is "install -m 644 %{S:2}", but
	when build booth on SLE12 or openSUSE Leap42.1, it reports %{SOURCE2}
	is not defined. I guess the file should be contrib/geo-cluster.fwd.
	This patch can fix the build error.

2016-07-12  Dejan Muhamedagic  <dejanmm@fastmail.fm>

	Merge pull request #47 from liu4480/master
	low:fix:remove unnecessary return from unit-test.py

2016-07-04  Bin Liu  <bliu@suse.com>

	low:fix:remove unnecessary return from unit-test.py
	In function _filename of class UT, there are two returns, and the
	second one will never be executed. Remove one line of return in the
	fix.

2016-06-29  Dejan Muhamedagic  <dejan@hello-penguin.com>

	Merge remote-tracking branch 'origin/pr/46'

2016-06-22  Jan Pokorný  <jpokorny@redhat.com>

	maint: spec: fix booth-test containing undesired build sources
	Issue introduced as of 5a457ee.

2016-06-16  Jan Pokorný  <jpokorny@redhat.com>

	Feature: make log contain source address of unknown site
	So far, log would contain just the (reasonably unique) identifier
	of the astray originator, but it's hard or downright impossible
	to unambiguously recover the original address just with this piece
	of knowledge.  Hence to allow for convenient tracking such cases
	down, log also the source address if possible.

	Technically, we are abusing the fact that said identifiers are supposed
	to be non-negative (most significant bit set to zero) while the proper
	OK state is indicated with zero and proper error condition mostly with
	negative integers.  So these identifiers fit nicely into the positive
	integer area, except for:
	- zero identifier <-- we flip all the bits but MSB to 1 in this case
	- malformed identifiers with MSB=1 <-- we flip MSB to 0

	Also, we make sure that remaining error conditions not following the
	rule and being indicated with positive integers are now indicated
	with negative ones.

	This convention is also mentioned in the function declaration's comment.

	Low: remove redundant check after find_site_by_id
	First, no other invocation is performed with this extra check, and then,
	find_site_by_id itself would have triggered NULL pointer dereference
	by that point already.

	Refactor: quasi-sort includes in transport.c

	Comment: add_site: explain why inet_pton is endianess-save

	Fix typo: enought -> enough
	Also ensure the comment is not ending with a free-floating "a" particle.

	Refactor: main: remove superfluous includes
	Introduced with a2bbdbd but not removed with ed5d41b.

	Refactor: attr.c: merge if-else series into the switch statement

	Refactor: mark no_leader properly as a constant pointer

2016-06-10  Dejan Muhamedagic  <dejan@suse.de>

	Merge remote-tracking branch 'origin/pr/44'

2016-06-10  Jan Pokorný  <jpokorny@redhat.com>

	CI: initial .travis.yml

	build: configure: "libsystemd" also known as "libsystemd-daemon"
	...at least for our purpose.

	Reference:
	https://github.com/systemd/systemd/commit/0ebee8818404adb95a0b8a01416aad3a16f64ae1

	build: configure: normalize spaces -> tabs

	build: configure: check for pacemaker/crm/services.h header

2016-06-09  Jan Pokorný  <jpokorny@redhat.com>

	build: drop declared man pages from main Makefile
	That should have been dropped as of b6c3acf.
	It prevents running "make check" when there's no asciidoc executable.

	Med: main: initialize Libcrypt properly before the first use
	This avoids following message arising from the library itself:
	"Libgcrypt warning: missing initialization - please fix the application"

	Refactor: main: substitute is_auth_req macro

2016-06-07  Dejan Muhamedagic  <dejan@suse.de>

	Medium: extprog: fix race condition on ticket loss

2016-06-03  Dejan Muhamedagic  <dejan@suse.de>

	Medium: attr: fix wrong order for hash free functions

2016-06-02  Dejan Muhamedagic  <dejan@suse.de>

	Low: attr: add ticket name to warnings

	Low: attr: set time string to "" when time is not set

	Dev: extprog: set progstate debug

2016-05-31  Dejan Muhamedagic  <dejan@suse.de>

	Low: extprog: fix pid test

	Low: ticket: reset next state on ticket reset
	Even though the next state is reset every time in ticket_cron, it
	may at times survive for long enough to trigger new elections
	even though the ticket got revoked in the meantime. Observed once
	on quick succession of the following: start, grant to another
	site, revoke (which happens also on another site).

	"Low" as it would probably never happen in normal operation.

	Merge pull request #42 from jnpkrn/clarify-gplv2+-from-pr22
	maint: clarify GPLv2+ in the license notices from an earlier PR

2016-05-30  Jan Pokorný  <jpokorny@redhat.com>

	maint: clarify GPLv2+ in the license notices from an earlier PR
	Embarrassingly enough, I forgot to update the PR with the fixed license
	notices while I was pushing for clarifications elsewhere in the code.

2016-05-26  Jan Pokorný  <jpokorny@redhat.com>

	Feature: alternative logger (in service-runnable script)
	This effectively eliminates the last dependency on glue project as such.

	Feature: allow skipping "coredump nursing" phase
	This effectively eliminates the last dependency on glue libraries.

	Feature: alternative "nametag" provider: libsystemd

2016-05-23  Jan Pokorný  <jpokorny@redhat.com>

	Feature: alternative range2random provider: glib
	Also check if cl_rand_from_interval is actually defined in
	<clplumbing/cl_random.h> (not the case with older glue/plumb lib).

	Feature: alternative logging provider: libqb

	Feature: offer alternatives to libraries from (cluster-)glue
	This revision is a preparation work establishing --without-glue switch
	to configure that will eventually allow non-glue alternatives.

	The analogous conditional is added to the spec file, based on premise
	that cluster-glue will not be re-introduced into Fedora, RHEL, etc.

2016-05-19  Dejan Muhamedagic  <dejan@suse.de>

	Merge remote-tracking branch 'origin/pr/40'

	Merge remote-tracking branch 'origin/pr/39'

	Merge remote-tracking branch 'origin/pr/38'

	Merge remote-tracking branch 'origin/pr/37'

	Merge remote-tracking branch 'origin/pr/36'

2016-05-19  Jan Pokorný  <jpokorny@redhat.com>

	Low: add_site: drop a comment that should have been long gone
	(specifically, since 380601d86410d96f580d1d56705dba8d5fd82f44).

	Low: client_alloc: unify (and sanitize) malloc/realloc

	Low: setup_tcp_listener: close socket when no longer needed
	Discovered-by: static analysis/Coverity

	Low: clarify key file read permissions requirement a bit

2016-05-19  Dejan Muhamedagic  <dejan@suse.de>

	Merge remote-tracking branch 'origin/pr/31'

	Merge remote-tracking branch 'origin/pr/32'

2016-05-13  Jan Pokorný  <jpokorny@redhat.com>

	High: read_client: sizeof(*struct_ptr) instead of sizeof(struct_ptr)
	Previously, the branching used accidentally incorrect (not even
	remotely related) condition.

	Issue introduced with partial refactoring/rewrite/extension:
	9ca5e67dc22454805a5e41f5da137ef63be85c8a

	Med: get_local_id: denoopize dependent condition (signedness issue)
	Otherwise, condition in booth_tcp_init (src/transport.c):

		if (get_local_id() < 0)
			return -1;

	could never be triggered.  It should not be triggered anyway at the
	current state, but try to stay sane no matter what, especially if
	the issue was hidden in such a nasty way.  Also note that using "int"
	should be pretty much fine as precautions are taken in add_site
	so as to keep MSB unset for site IDs in use, which is sufficient
	to distinguish them from a signalling negative value.

	Discovered-by: static analysis/Coverity

	Med: list_ticket: fix a memleak in case of buffer too small
	Note that such a case seems impossible but there may be other issues
	that will add up (see, e.g., reckless snprintf use pointed out with
	https://github.com/ClusterLabs/pacemaker/pull/810, something should
	eventually be reflected here as well).

	Discovered-by: static analysis/Coverity

	Low: list_ticket: space complexity depends just on tickets count
	There is no one-off string present in the accumulated output.
	Furthermore, the space reserved for each ticket is more than enough
	per my back-of-the-envelope calculation for the worst case
	(BOOTH_NAME_LEN * 2 + 92).

	Low: do_status: close lock file when no longer needed
	Discovered-by: static analysis/Coverity

	Low: do_status: fix superfluous check for valid lock's fd
	We can already be sure that's the case (fd != -1).

	Low: do_status: first check for lock's fd from _lockfile
	This is also for consistency with _lockfile's usage in create_lockfile.

	Low: do_status: avoid shadowing the file-scope static variable
	It asks for troubles to name both this and function-local variable the
	same (lock_fd).

	Med: format_peers: fix a memleak in case of buffer too small
	Note that such a case seems impossible but there may be other issues
	that will add up (see, e.g., reckless snprintf use pointed out with
	https://github.com/ClusterLabs/pacemaker/pull/810, something should
	eventually be reflected here as well).

	Discovered-by: static analysis/Coverity

2016-05-12  Jan Pokorný  <jpokorny@redhat.com>

	Low: read_config: close config file when no longer needed
	Discovered-by: static analysis/Coverity

	Low: read_config: unify jump labels (parsing: err, after: out)
	This is a preparation work for a subsequent commit
	"Low: read_config: close config file when no longer needed".

2016-05-11  Jan Pokorný  <jpokorny@redhat.com>

	Med: make foreach_* macros use variable refs passed as arguments
	...instead of accidentally stealing variables from the outter, lexical
	scope, which only worked thanks to match on identifiers, and would get
	ultimately broken on renaming them in respective lexical scopes.

2016-05-05  Jan Pokorný  <jpokorny@redhat.com>

	docs: licensing conformance follow-up (man pages)
	Yet, make GPLv2+ licensing explicit also in the man pages.

	build: ensure expected behavior if --without-html_man not provided

2016-04-27  Jan Pokorný  <jpokorny@redhat.com>

	test: fix a typo in assertion violation message

	test: booth cannot cope with <address>%<device> IPv6 addresses
	...at least for the time being.  So craft ::1 address in that case
	as a substitute.

	test: adapt to libqb-based logging with lowercased priorities

	test: fix failing test_a_few_trailing_whitespaces
	Original assertion tested the exact opposite to what is expected
	(when daemon gets killed, lock/pid file should no longer exist).

2016-04-26  Dejan Muhamedagic  <dejan@suse.de>

	Merge remote-tracking branches 'origin/pr/26' and 'origin/pr/27'

	Merge remote-tracking branch 'origin/pr/30'

	Merge branch 'jnpkrn-maint-2-spec'

	Merge branch 'maint-2-spec' of https://github.com/jnpkrn/booth into jnpkrn-maint-2-spec

	Merge pull request #28 from jnpkrn/maint-1-build
	Maintenance refresh, part 1: build system

2016-04-22  Jan Pokorný  <jpokorny@redhat.com>

	Med: prevent possible truncation w/ invalid geoattrs in CIB
	Emit a warning so that there's a trace of such attributes being
	intentionally omitted.

	Low: drop unused inline function

	Low: make (a defensive) use of known static buffer sizes
	Some cases might have still been omitted.

	Low: "char *" more string funcs friendly than unsigned variant
	Also make use of typedef'd boothc_site.

	Low: const-cast char arrays where suitable
	Or more frankly, where compiler complains (which is a good
	approximation) + human spotted eligible parts.

	Also make cast from/to "xmlChar *" explicit.

	Low: use unsigned int where suitable
	Or more frankly, where compiler complains, which is a good
	approximation.

	Low: apparently static function should be marked so

	Low: avoid using cl_log directly

	maint: spec: use pkgconfig for glib-2.0
	...as this is the only reference configure script uses.

	References:
	http://rpm.org/gitweb?p=rpm.git;a=commit;h=6c4b0fc (~2007)

	maint: spec: get rid of redundant %clean section
	References:
	http://rpm.org/gitweb?p=rpm.git;a=commit;h=3fc5824 (~2009)

	maint: spec: drop redundant, unused %check scriptlet

	maint: spec: SPDX license notation only for SUSE

	maint: configure: drop some more useless definitions

2016-04-21  Jan Pokorný  <jpokorny@redhat.com>

	build: add proper zlib build-time check + link flag + spec's BR

	build: allow requesting no HTML man + use in spec

	build: s/CPPFLAGS/CFLAGS/ + use GLIB_LIB

	maint: configure: nicely formatted help/summary screens

	maint: configure: --enable-resource-monitor no longer relevant
	Respective code removed as of f5700b4

	maint: configure: drop useless AC_CHECK_LIB invocations
	Note that, furthermore, cl_log is not in "libgpl" (namesake does exist,
	though: Game Programming Library), but rather in "libplumb" that is
	currently referenced in src/Makefile.am directly, anyway.

2016-04-08  Jan Pokorný  <jpokorny@redhat.com>

	Low: drop new_election's dead code as SITE role already enforced

2016-04-08  Dejan Muhamedagic  <dejan@suse.de>

	Merge branch 'master' of github.com:ClusterLabs/booth
	Merge upstream

	Medium: main: finally fix address matching

2016-04-06  Jan Pokorný  <jpokorny@redhat.com>

	fixup: sanitize true-false logic for "daemonize"
	Also, ensure the variable is just within the file scope (not used
	in any other compilation unit).

2016-04-01  Dejan Muhamedagic  <dejan@suse.de>

	Merge pull request #24 from jnpkrn/fix-FSF-address
	maint: licensing conformance follow-up (library->program)

2016-03-30  Jan Pokorný  <jpokorny@redhat.com>

	maint: licensing conformance follow-up (library->program)
	Once we got clarified "GPLv2.1+ -> GPLv2+" (rejecting LGPL
	interpretation, cf. e294fa2), we ought to reword "library"
	references to say "program", in accordance to the standard
	GPLv2 notice.

	In the same vein, da90d0b missed an instance of the old FSF
	address, so get this resolved as well.

2016-03-25  Lars Ellenberg  <lars.ellenberg@linbit.com>

	fixup: add missing dirent.h include
	recent commit "Feature: extprog: add capability to run a set of programs"
	uses scandir(), but forgot to include dirent.h

2016-03-25  Andrew Beekhof  <andrew@beekhof.net>

	Merge pull request #23 from jnpkrn/fix-FSF-address
	maint: fix the FSF address + 5x s/write the/write to the/

2016-03-24  Jan Pokorný  <jpokorny@redhat.com>

	maint: clarify GPLv2.1+ -> GPLv2+ in the license notices
	This revision, on behalf of prevailing inclination expressed in the open
	so far (see below), clarifies previously dubious license notices
	impacting core source files.

	Original issue that GPLv2.1 does not resolve to any recognized license
	was raised at developers ML [1].  Its author also made, in parallel,
	a best effort to contact contributors to affected files, so that any
	concerns could be heard.

	In response, one especially profound, retrospective analysis ensued [2].
	Presented historical context (genesis in the heartbeat project [3],
	spreading from here through copy-paste epidemy into the wider ecosystem
	inadverently, to "stay in project") shed solid light into what's the
	most plausible interpretation of "GNU General Public License [...],
	either version 2.1 of the License, or (at your option) any later
	version".

	Supported also by the fact there's no controversy on the subject so far,
	this is a mere practical fulfillment of pre-agreed plan[4] to let these
	two unlucky, extraneous characters in the license notices rest in peace.

	[1] http://oss.clusterlabs.org/pipermail/developers/2016-March/000172.html
	(alt. http://article.gmane.org/gmane.comp.clustering.clusterlabs.devel/133)

	[2] http://oss.clusterlabs.org/pipermail/developers/2016-March/000180.html
	(alt. http://article.gmane.org/gmane.comp.clustering.clusterlabs.devel/141)

	[3] http://hg.linux-ha.org/heartbeat-STABLE_3_0/rev/bc508513c4dc#l2.10

	[4] http://oss.clusterlabs.org/pipermail/developers/2016-March/000183.html
	(alt. http://article.gmane.org/gmane.comp.clustering.clusterlabs.devel/145)

2016-03-23  Dejan Muhamedagic  <dejan@suse.de>

	Merge branch 'multiple-extprog'

	Medium: extprog: external tests timeout after renewal interval

	Feature: extprog: add capability to run a set of programs

2016-03-21  Dejan Muhamedagic  <dejan@suse.de>

	build: remove the old paxos update pre-script

2016-03-17  Dejan Muhamedagic  <dejan@suse.de>

	Dev: extprog: rename prog to path (it can be a directory too)

	Doc: update the before-acquire-handler description to match the new semantics

2016-03-16  Dejan Muhamedagic  <dejan@suse.de>

	build: release v1.0

2016-03-02  Dejan Muhamedagic  <dejan@suse.de>

	Medium: systemd: add booth-arbitrator.service (bsc#967036)

	Low: systemd: fix Conflicts and Condition

2016-02-25  Jan Pokorný  <jpokorny@redhat.com>

	maint: fix the FSF address + 5x s/write the/write to the/
	Based on https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
	as of today.

2016-02-23  Dejan Muhamedagic  <dejan@suse.de>

	Low: lsb: remove misleading debugging

	Medium: main: improve address matching procedure

2016-01-15  Philipp Marek  <philipp.marek@linbit.com>

	Unit tests: upgrade to current source code.
	Development of booth broke the unit tests; with these changes
	"001_init-get-heartbeat" and "003*" run again; the rest needs
	to be adapted to the new behaviour.

	Unit tests: The tickets store the external policy program differently now.
	won't work, as parse_extprog() will cut on all whitespace, never mind
	whether there are quotes...

2016-01-14  Philipp Marek  <philipp.marek@linbit.com>

	Unit tests: the startup message now includes a version string.

	Field 'hb_sent_at' was renamed to 'req_sent_at' in 4bc7edce885.

2016-01-12  Dejan Muhamedagic  <dejan@suse.de>

	build: release candidate v1.0-rc1

2016-01-11  Dejan Muhamedagic  <dejan@suse.de>

	Low: main: prevent segfault on no arguments

	Dev: ticket: rename variables in send_msg

	Medium: ticket: term 0 is a valid term (bsc#952426)

2015-12-16  Dejan Muhamedagic  <dejan@suse.de>

	Dev: test: initialize rc in runtest

2015-12-03  Dejan Muhamedagic  <dejan@suse.de>

	Dev: test: fix external/booth ip use

2015-12-02  Dejan Muhamedagic  <dejan@suse.de>

	Dev: test: use SSH_OPTS for rsync too

2015-12-01  Dejan Muhamedagic  <dejan@suse.de>

	Dev: test: allow alternative ip addresses

	Dev: test: create and distribute authfile

2015-11-30  Dejan Muhamedagic  <dejan@suse.de>

	Dev: ocf: fix ocf code

	Dev: ocf: add geostore sample RA

	build: fix get_attr.sh installation

	Dev: test: maintain exit code in live_test

	Medium: attr: GEO attributes OCF RA support

2015-11-27  Dejan Muhamedagic  <dejan@suse.de>

	Medium: main: add 'other' as possible site reference

2015-11-23  Dejan Muhamedagic  <dejan@suse.de>

	Dev: test: set attribute in tests where necessary

	Dev: test: add two attr-prereq tests

	Medium: arbitrator: mark expired tickets as lost (bsc#956321)

	Medium: attr: better control of election cause

2015-11-20  Dejan Muhamedagic  <dejan@suse.de>

	Medium: attr: keep attributes in the CIB

2015-11-18  Dejan Muhamedagic  <dejan@suse.de>

	High: attr: attribute prerequisites

2015-11-06  Dejan Muhamedagic  <dejan@suse.de>

	Dev: add find_address debug

	Dev: initialize rv in process_attr_request

	Merge branch 'attr'

	Feature: geo attributes

	build: disable fortify with debug

	Low: doc: add the geostore(8) man page

2015-09-15  Philipp Marek  <philipp.marek@linbit.com>

	Low: Fix example config file to not throw an error.

2015-08-28  Dejan Muhamedagic  <dejan@suse.de>

	Low: improve logging

2015-08-27  Dejan Muhamedagic  <dejan@suse.de>

	Low: service-runnable: improve error checking

	Low: client: prevent garbage characters at the end of the list

2015-08-25  Dejan Muhamedagic  <dejan@suse.de>

	Dev: test: run report on all nodes at sites

2015-08-20  Dejan Muhamedagic  <dejan@suse.de>

	Low: extprog: handle better multiple children signal delivery

	Dev: test: remove ticket on stop site clean

2015-08-19  Dejan Muhamedagic  <dejan@suse.de>

	Dev: extprog: use tk_test for tk->clu_test

	Dev: ticket: move election start out of the signal handler

2015-08-04  Dejan Muhamedagic  <dejan@suse.de>

	Low: booth-keygen: older dd don't have status=none option

	Dev: use fputs instead of fwrite
	Difficult to ignore the return value of fwrite with some older
	glibc, fputs does the job as well.

2015-08-03  Dejan Muhamedagic  <dejan@suse.de>

	Medium: add booth-keygen

2015-07-31  Dejan Muhamedagic  <dejan@suse.de>

	Medium: ticket: prevent running external program twice

	Medium: ticket: make sure that we're the leader if granting ticket (bsc#940037)

	Dev: remove obsolete TODO comments

2015-07-27  Dejan Muhamedagic  <dejan@suse.de>

	Medium: docs: add booth processing FSM dot graphs

2015-07-23  Dejan Muhamedagic  <dejan@suse.de>

	Medium: main: add peer statistics

2015-07-22  Dejan Muhamedagic  <dejan@suse.de>

	Medium: main: add booth peers command

	Low: doc: add libgcrypt reference to the readme

2015-07-21  Dejan Muhamedagic  <dejan@suse.de>

	Medium: main: don't allow zero poll timeout (bsc#938820)

	Medium: pcmk: don't log error when ticket not in CIB

2015-07-17  Dejan Muhamedagic  <dejan@suse.de>

	Medium: auth: add support for libgcrypt

2015-07-10  Dejan Muhamedagic  <dejan@suse.de>

	Dev: don't build unused functions

2015-07-09  Dejan Muhamedagic  <dejan@suse.de>

	Medium: client: fix memory leak in ticket list

	Medium: client: reference client fd instead of pointer in requests
	Clients are allocated and sometimes reallocated, they can move.

	Low: client: reduce client lookup range

	Medium: client: fix memory growing indefinitely on new client connect

	Dev: client: add more debug log

	Dev: test: update log markers

	Low: main: don't comment on successful list

	Medium: extprog: ignore running external program on revoke

	Medium: client: make sure that the client is still there to be notified

	Medium: extprog: update ticket grant/reacquire procedure
	Need to start elections from the signal handler.
	Also, fix external program failure handling.

2015-07-08  Dejan Muhamedagic  <dejan@suse.de>

	Dev: main: ignore fwrite return value

2015-07-07  Dejan Muhamedagic  <dejan@suse.de>

	Medium: client: don't allow SIGPIPE to kill the server (if the client leaves too early)

	Low: doc: remove warning about running external program synchronously

	Dev: test: improve handling failed test setup

	Dev: test: refine several tests

	Dev: test: add a few more log markers

	Dev: test: fix leader consistency check if there is no leader

	Dev: test: split out tests' setup

	Low: pacemaker: report error if crm_ticket fails

	Medium: extprog: preserve pclose(2) child exit status
	The SIGCHLD signal handler gets invoked also on pclose/system.
	Waiting on these children makes these calls return wrong status.
	One option to resolve this would be to block the SIGCHLD signal
	until popen/pclose sequence is finished, but just waiting for the
	"right" children seems to be somewhat simpler and more robust. At
	a small performance price, but the number of tickets should
	always be rather small.

2015-07-04  Dejan Muhamedagic  <dejan@suse.de>

	Medium: extprog: run programs asynchronously

2015-07-01  Dejan Muhamedagic  <dejan@suse.de>

	Doc: update the testing doc

	Medium: clients: free request when removing client
	Also prevents memory leaks.

2015-06-30  Dejan Muhamedagic  <dejan@suse.de>

	Medium: transport: use non-blocking read
	Don't allow server to be blocked by a misbehaving (or slow)
	client.

	This also fixes a possible buffer overflow by malicious clients.

	Dev: remove unused listener

	Merge branch 'auth'

2015-06-29  Dejan Muhamedagic  <dejan@suse.de>

	Dev: auth: improve error reporting

	Dev: auth: don't reload the key automatically

	doc: amend auth in the man page

	doc: describe auth in the README

	Feature: auth: test timestamps in packets (replay attacks defense)

	Feature: auth: hmac based authentication
	Authentication based on the mhash library.

2015-06-24  Dejan Muhamedagic  <dejan@suse.de>

	Dev: test: fix applicability test for external_prog_failed

2015-05-21  Dejan Muhamedagic  <dejan@suse.de>

	build: conditional build of auth.c

2015-04-09  Dejan Muhamedagic  <dejan@suse.de>

	build: add missing glib library

2015-04-07  Dejan Muhamedagic  <dejan@suse.de>

	Dev: raft: remove unused extern

	Dev: test: check also shared rsc

2015-03-28  Dejan Muhamedagic  <dejan@suse.de>

	Dev: test: check both booth and cib consistency

2015-03-25  Dejan Muhamedagic  <dejan@suse.de>

	Medium: timer: round to seconds when converting from timeval

	Medium: ticket: ignore late MY_INDEX requests
	A belated MY_INDEX should be ignored if we're already trying to
	get the ticket  (otherwise the elections get cancelled).

	Low: ticket: make sure to advertise the last valid ticket on status request

	Dev: test: restart all after failed test

2015-03-24  Dejan Muhamedagic  <dejan@suse.de>

	Dev: ticket: use request processing for client notifications

	build: spec update for firewall rules

	Dev: ticket: request processing facility

	contrib: add geo-cluster.fwd (suse firewall rules)

	Medium: ticket: restart elections after last candidate disappears
	This was actually there before (introduced in e59be21f), but got
	erronously removed later with the commit 17aef86.

	Dev: test: use -C grant option to make tests more robust

2015-03-18  Dejan Muhamedagic  <dejan@suse.de>

	High: ticket: add -C option (wait for commit)

2015-03-17  Dejan Muhamedagic  <dejan@suse.de>

	Dev: test: use absolute path when invoking live_test.sh

	Dev: test: use root login for ssh and rsync

	Dev: test: log delimiter when starting test

	Low: ticket: handle the atypical case of last renewal time not set

2015-03-16  Dejan Muhamedagic  <dejan@suse.de>

	Dev: test: check first booth, then CIB in check_cib

	Dev: test: extend wait in split leader

	Dev: raft: fix reference typo, update messages

	Low: raft: ignore votes for none

	Dev: ticket: save committed ticket on ticket release

	Medium: raft: handle duplicate ticket release requests

	Medium: booth-site: exit early in start if daemon cannot start

	Dev: test: cleanup booth resource on start

	Dev: ticket: protect term validity test

	Medium: raft: ignore messages with invalid term (lower than already committed)
	Found with restart_granted_nocib (NETEM_ENV=loss:50) test.

	Medium: raft: better control of term increment

	Dev: raft: log server state transitions

	Dev: logging: log function/line with debug

	Dev: test: improve booth consistency check

	Dev: timer: improve debug output

2015-03-15  Dejan Muhamedagic  <dejan@suse.de>

	Dev: test: improve external prog test applicability

	Dev: test: add sharedrsc OCF test RA

2015-03-10  Dejan Muhamedagic  <dejan@suse.de>

	Medium: ticket: allow finer resolution time in messages
	If the configuration file has fractional times (i.e. not integer
	number of seconds), then we need to send such times in messages
	around. Otherwise, there could be discrepancies in ticket
	validity times on various booth members.

	This works under following assumptions:

	- booth.conf are equal on all booth hosts

	- all booth hosts have booth version which supports subsecond timers

	In supported configurations the assumptions hold.

	Dev: test: reduce pause in tests

	Dev: test: allow subsecond times in conf

	Dev: test: improve ticket parsing

2015-03-09  Dejan Muhamedagic  <dejan@suse.de>

	Medium: use subsecond timers internally
	Coercing timers to seconds eventually introduced misaligned
	actions. Though such cases are taken care of, it is still better
	to keep actions on different hosts as close to each other as
	possible.

	This should also enable subsecond elections. To the least, it
	enables faster testing.

	Code is also cleaner, as various time operations got stuffed into
	timer.* and given meaningful names.

2015-03-07  Dejan Muhamedagic  <dejan@suse.de>

	build: update ml address

2015-03-04  Dejan Muhamedagic  <dejan@suse.de>

	Low: spec: skip the update procedure on new installations

	doc: add sample pacemaker configuration to the testing README

2015-02-18  Dejan Muhamedagic  <dejan@suse.de>

	build: update spec, doc, add AUTHORS

2015-01-22  Dejan Muhamedagic  <dejan@suse.de>

	Medium: booth-arbitrator: fix exit codes for all actions

	Medium: booth-arbitrator: set the right LSB exit code in status

	Dev: booth-arbitrator: make variables local

	Medium: booth-arbitrator: fix stop exit code (bnc#914306)

	Medium: booth-arbitrator: update exit codes

	Low: main: use /proc/self/oom_score_adj instead of oom_adj (bnc#914037)

2014-10-02  Dejan Muhamedagic  <dejan@suse.de>

	Doc: clarify the meaning of renewal-freq

	update the FSF snail mail address

	Dev: test: add test for OCF RA reload

2014-10-01  Dejan Muhamedagic  <dejan@suse.de>

	Medium: ra: add restart and reload actions (bnc#899244)

2014-09-25  Dejan Muhamedagic  <dejan@suse.de>

	Dev: test: add netem duplicate and reorder

2014-09-15  Dejan Muhamedagic  <dejan@suse.de>

	Dev: update the lua dissector

2014-09-12  Dejan Muhamedagic  <dejan@suse.de>

	doc: add documentation for upgrade from v0.1

	build: stop arbitrator on update from previous v0.1

	Dev: test: use crm_ticket instead of crmsh

	Dev: test: use rcbooth-arbitrator instead of systemctl

	Medium: ra: support the previously released v0.1

	Low: ra: update library location

2014-09-11  Dejan Muhamedagic  <dejan@suse.de>

	build: better support for sysv and systemd init files

2014-08-21  Dejan Muhamedagic  <dejan@suse.de>

	Doc: update client help
	Present the simplified syntax. Make it consistent with the man
	page.

	Medium: doc: man page update
	- update conf example
	- make renewal understable
	- mention sysv init script
	- improve external handler description

2014-08-19  Dejan Muhamedagic  <dejan@suse.de>

	Dev: test: add longgrant2 test

2014-08-18  Dejan Muhamedagic  <dejan@suse.de>

	Dev: test: wait for definite answer in grant/revoke

	Medium: service-runnable: test also if the ticket is in standby

	Medium: service-runnable: unset -e, crm_resource fails if the meta attribute doesn't exist

2014-08-14  Dejan Muhamedagic  <dejan@suse.de>

	Dev: test: fix no config error reporting

	Dev: test: run netem only for the booth port

2014-08-13  Dejan Muhamedagic  <dejan@suse.de>

	Low: main: update messages that arbitrators cannot grant/revoke

2014-08-12  Dejan Muhamedagic  <dejan@suse.de>

	Low: ticket: if the site is NULL, then return 0 as node id

	Dev: test: reset netem after test recover

2014-08-11  Dejan Muhamedagic  <dejan@suse.de>

	Dev: test: test for pending with the same booth list output

	Medium: raft: allow election for valid tickets only if the leader wants to step down

2014-08-08  Dejan Muhamedagic  <dejan@suse.de>

	Dev: test: support multiple netem qdisc

	Dev: test: log locally when setting netem

	Dev: test: set ssh StrictHostKeyChecking=no

	Dev: test: fix logging for __netem__

2014-08-07  Dejan Muhamedagic  <dejan@suse.de>

	Dev: test: don't reset netem more than once

	Dev: test: fix invoking netem without args

	Medium: ticket: drop expired tickets in elections too (gh#17)

	Dev: test: relax timing in split_leader

2014-08-05  Dejan Muhamedagic  <dejan@suse.de>

	Low: ticket: print INF instead of N/A on unknown expiry time (reverts 7830e3f)

2014-08-04  Dejan Muhamedagic  <dejan@suse.de>

	Medium: config: prevent segfaults on bad usage

	High: config: allow configuring more than one ticket (bnc#889806)
	For whatever reason I assumed at the time that there'd be only
	one ticket (b3f65f0). The ticket validation was also skipped for
	the last ticket (7386381). This commit fixes both issues.

2014-07-25  Dejan Muhamedagic  <dejan@suse.de>

	Low: ticket: reset more of a ticket in reset_ticket
	Under some circumstances, booth may try to resend packets for a
	ticket which is in the INIT state. This commit prevents that.

2014-07-24  Dejan Muhamedagic  <dejan@suse.de>

	Low: ticket: run the follower procedure on updates too
	A heartbeat may get lost or update may reach the follower sooner.
	Run the same procedure as in heartbeat.

	Dev: test: report differently on test setup failure

	Dev: test: add grant_site_reappear recovery

	Dev: ticket: commit delayed tickets in timely manner

2014-07-23  Dejan Muhamedagic  <dejan@suse.de>

	Medium: raft: be more permissive for elections for valid tickets
	In case the network is losing packets, it may happen for instance
	that a leader wants to step down, but not all servers get the
	message. Now, those that didn't would reject elections as they
	have a still valid ticket. Here we relax rejecting elections only
	in case the requester thinks that the ticket got lost (which is
	obviously not true for valid tickets).

2014-07-23  Ferritt1975  <ericcass@gmail.com>

	Update booth.spec
	Tried to compile on RHEL6.5 without success due to bad path on lines 80-81, and extra files in BUILDROOT.  Extra files was resolved by adding references to %files section.

2014-07-23  Dejan Muhamedagic  <dejan@suse.de>

	build: fix doc dir for redhat based distros

	Dev: test: increase timeout more on flaky networks

	Dev: test: add -Q to hb_report call

2014-07-22  Dejan Muhamedagic  <dejan@suse.de>

	Dev: test: add grant_site_reappear test

2014-07-21  Dejan Muhamedagic  <dejan@suse.de>

	Dev: test: refactor ticket grant

2014-07-17  Dejan Muhamedagic  <dejan@suse.de>

	build: update setting build information

	Dev: main: add -w to the option string

	doc: update booth operation doc

	Merge pull request #14 from yuusuke/fix_configure
	Modified to use PACKAGE_VERSION to the initial value

	Merge pull request #15 from seabres/rhelrpm
	Setup requirements for RH based builds.

	Dev: test: support for renewal-freq

	Dev: test: update for synchronous client

	Medium: client: wait for request outcome (bnc#887689)

2014-07-15  Dejan Muhamedagic  <dejan@suse.de>

	Dev: ticket: move setting timeout to ticket_broadcast

	Dev: ticket: remove unused code

	Low: raft: reset leader on REQ_VOTE

	Low: ticket: update log messages

	Low: ticket: do not miss writing delayed tickets to CIB

	Medium: ticket: add renewal frequency (bnc#887113)

	Medium: ra: simplify process status and removal

	Dev: test: use hb_report's quick option if present

2014-07-15  seabres  <rainer.brestan@gmx.net>

	Cluster-glue-libs are required.

2014-07-14  seabres  <rainer.brestan@gmx.net>

	Setup requirements for RH based builds.

2014-07-14  yuusuke  <yusk.iida@gmail.com>

	Modified to use PACKAGE_VERSION to the initial value

2014-07-14  Dejan Muhamedagic  <dejan@suse.de>

	Medium: config: fix copying name from the configuration file name (bnc#886674)
	Otherwise, the name always ended up as "booth".

	Dev: ticket: assert that local is configured

2014-07-10  Dejan Muhamedagic  <dejan@suse.de>

	Low: ra: set start and stop timeouts to the default 20s

	Low: client: handle better no tickets list

2014-07-03  Dejan Muhamedagic  <dejan@suse.de>

	build: add git version info and GNUmakefile for easier rpm package building

	Dev: test: fix syntax error

	Medium: raft: make sure that elections restart if the last candidate disappears
	Shouldn't happen, of course, but we may get unlucky.

2014-07-02  Dejan Muhamedagic  <dejan@suse.de>

	Medium: use monotonic clock if available (bnc#884746)
	gettimeofday(3) and time(2) use the clock which may be affected
	either by ntp or by the system administrator. This commit makes
	booth use clock_gettime, with CLOCK_MONOTONIC (preferred) or
	CLOCK_REALTIME.

	Low: raft: update a misleading log message

	Dev: test: logging update

	Dev: test: don't run crm configure in pipe over ssh

	Dev: test: make sure that the negative preference is configured

2014-07-01  Dejan Muhamedagic  <dejan@suse.de>

	Low: ticket: keep retrying starting elections

2014-06-30  Dejan Muhamedagic  <dejan@suse.de>

	Low: ticket: preserve lost leader properly

	Medium: raft: reset election on rejects too

2014-06-27  Dejan Muhamedagic  <dejan@suse.de>

	Medium: raft: accept OP_UPDATE in candidate and init states too

	Dev: test: add better error reporting on start

	Dev: test: better support when not running on one of the test servers

	Medium: ticket: don't write to CIB if we're in elections

	Dev: raft: refactor election scheduling

	Dev: ticket: refactor ticket_cron

2014-06-26  Dejan Muhamedagic  <dejan@suse.de>

	Merge pull request #12 from yuusuke/fix_service_runnable
	Add the handling of to judge an explicit stop resource.

	Dev: test: wait a bit more in the split_edge test

	Medium: raft: match the request in acks too (bnc#882209)
	We send heartbeats and ticket updates in a relatively quick
	fashion, one after the other. Since we wait only for the majority
	of heartbeats to arrive, a late heartbeat ACK may be interpreted
	as an ACK to the ticket update. With this change, the requesting
	server can see for which request the Ack has been sent as a reply.

	Medium: raft: add the request in reply packets
	The server replying to a request now copies that request into the
	reply RPC, so that the server that sent the request RPC can match
	the ack with the right request.

	Another option is to serialize RPC, i.e. add the monotonically
	increasing number ID to all RPC, but we don't need that (yet).

	Dev: test: add longgrant test

	Medium: raft: resend ticket updates (bnc#882209)
	Ticket updates are sent after we get the majority of heartbeats.
	To prevent other servers from expiring tickets in case of packet
	loss, followers will send acknowledgements for updates and the
	leader will resend to servers from which no acks were received.

	Medium: raft: add short delay before election start (bnc#883785)
	The short delay was already introduced earlier, but the important
	part when resolving ties wasn't included. The delay is now
	increased from 200ms to 1s, which should also increase the chance
	of elections succeeding.

	Also, replace sleeping with better cron scheduling.

	poll timeout reduced from 1s to 100ms.

	Dev: test: start tests with ticket revoked

	Dev: test: update test starts

	Dev: test: add some applicability checks

2014-06-25  Dejan Muhamedagic  <dejan@suse.de>

	Dev: test: increase wait in grant_noarb

	Low: raft: end elections at the right point in time

	Dev: test: log more thru syslog

	Dev: test: more time in failover and leader_split tests

	Low: raft: accept heartbeats after startup when we were the leader last time

	Dev: test: add end of args to the logger call

	Medium: ra: exit with success if validation fails in stop (bnc#883762)

	Dev: test: update port

	build: fix the release version

	Medium: raft: make server stepdown more robust
	If the external test program fails, we let others start elections
	by broadcasting a packet. If that packet gets lost, the elections
	may never be started. With this change, the packet is
	rebroadcasted again unless the elections got started in the
	meantime.

	Low: doc: reference the default port in examples (bnc#883183)

	Dev: test: add more logging

	Dev: test: make provision for getting report when test passed too

	Low: raft: shorter wait at startup

2014-06-24  yuusuke  <yusk.iida@gmail.com>

	Add the handling of to judge an explicit stop resource.

2014-06-20  Dejan Muhamedagic  <dejan@suse.de>

	Dev: test: wait a bit longer if there's packet loss involved

	Dev: test: run local commands without ssh

	Dev: test: find out netif for netem

	Dev: test: move netem to runtest

2014-06-19  Dejan Muhamedagic  <dejan@suse.de>

	Dev: test: add test/env list

	Dev: test: wait a bit for the CIB to get updated

	Dev: test: take into account possible valid time inconsistencies

2014-06-18  Dejan Muhamedagic  <dejan@suse.de>

	Low: raft: expect rejects after we stopped our elections

	Dev: test: sleep a bit between tests

	Dev: test: sleep for at least 2 seconds if the timeout is set lower

	Low: raft: remove unused commit_index (bnc#883216)

	Low: ticket: print N/A instead of INF on unknown expiry time

	Medium: raft: reset ticket leader before elections (bnc#883150)
	The server will refuse heartbeat from the newly elected leader in
	case the ticket leader is set to local. This may happen if the
	server finds itself in the CIB as the ticket leader, but then
	still loses elections, because somebody else already started
	them.

2014-06-17  Dejan Muhamedagic  <dejan@suse.de>

	Dev: test: allow configurable ticket names

	Dev: test: add netem support

2014-06-15  Dejan Muhamedagic  <dejan@suse.de>

	Dev: test: add test headers

	Dev: log when sending a reject

	Low: raft: send rejects on unexpected heartbeats and updates for still valid tickets

	Low: ticket: don't reset retry count on broadcast retries

	Medium: raft: preserve term for status messages
	If we started the election process, but the elections are still
	not finished, then we should send the last valid ticket for the
	status query. These elections may be rejected. Other servers
	which are just voting in elections are not to answer status
	queries at all.

	Dev: test: extend sleep in simultaneous_start_even

	Dev: test: dump the configuration file to the logfile

	Medium: raft: ignore VOTE_FOR if we lost the candidate status (bnc#882209)
	A server expects VOTE_FOR only if it's a candidate or otherwise
	the leader wants to step down. Rearrange processing accordingly.

	This can happen if REQ_VOTE/VOTE_FOR packets cross and REQ_VOTE
	was in between rejected by another server.

	Medium: raft: always accept heartbeats and updates from a valid leader (bnc#882209)
	We need to trust the ticket leader.

	On rejected elections, it may happen that some members remain
	with a (previously rejected) higher term. They need then to
	accept the valid lower term which is still at the leader. This
	could happen on a say 2-3 split brain or high packet loss
	network.

2014-06-14  Dejan Muhamedagic  <dejan@suse.de>

	Dev: test: add the packet loss test

	Dev: test: improve listing ticket owner

	Dev: more debugging

2014-06-13  Dejan Muhamedagic  <dejan@suse.de>

	Dev: raft: remove unneeded test from ticket update

	Dev: more detailed debugging messages

	Dev: test: add a grant with no arbitrators test

	Dev: raft: reseting leader in elections is obsolete

	Medium: raft: ack revokes (bnc#882057)
	All servers must ack the revoke operation sent by the leader.
	If an ack is missing, the packet is being resent, as with
	heartbeats. This makes revokes more robust.

	This commit introduces a new RPC: "Ack." This RPC is also used to
	acknowledge heartbeats.

2014-06-10  Dejan Muhamedagic  <dejan@suse.de>

	Low: main: log something on exit

	Medium: config: don't allow too long packet retry period

	Medium: config: don't change ticket defaults in ticket stanzas (use __defaults__)

	Dev: update one log message

	Dev: remove some debugging

2014-06-07  Dejan Muhamedagic  <dejan@suse.de>

	Dev: test: improve the simultaneous start test

	Dev: ticket: keep processing if the next state is follower

2014-06-06  Dejan Muhamedagic  <dejan@suse.de>

	Dev: test: add slow start test

	Medium: raft: don't ignore duplicate vote_for packets
	Which are sometimes not duplicate, but from new elections. The
	term's not increased in case there was no tie, and the candidate
	expects others to keep their votes.

	Dev: test: update/cleanup

2014-06-05  Dejan Muhamedagic  <dejan@suse.de>

	Medium: raft: don't reset acks prematurely (bnc#881508)

	Dev: add some debugging

	Low: test: add simultaneous start test

	Low: doc: move the user/group parameters to a better place

	Low: test: add test applicability test

	Medium: raft: on server step down reset the ticket state too
	And write the ticket to the CIB. We don't have the ticket
	anymore.

	Low: test: add test for external program failure

	Low: service-runnable: remove crm_simulate's tmp shadow (bnc#879934)

	Medium: raft: invalidate ticket if the leader wants to step down

	Medium: raft: delay revoke if there's another operation in progress
	In case a heartbeat was just sent out and the user wants to
	revoke the ticket, better wait a bit until we get all the acks.

2014-06-04  Dejan Muhamedagic  <dejan@suse.de>

	Low: test: fix the nocib test

	Low: test: add failover test recover

	Low: ticket: disown ticket granted elsewhere

	Low: raft: change state to follower only on heartbeat from the leader

	Medium: main: enable coredumps

2014-06-03  Dejan Muhamedagic  <dejan@suse.de>

	Low: test: check if all daemons are running after the test

	Low: test: none is not a host

	Merge pull request #9 from inouekazu/allocate_check
	Fix: config: Correctly handle error of realloc()

2014-05-29  Kazunori INOUE  <kazunori.inoue3@gmail.com>

	Fix: config: Correctly handle error of realloc()

2014-05-26  Dejan Muhamedagic  <dejan@suse.de>

	Medium: raft: account for slow servers in elections
	On ticket lost, a fast server may start the elections before some
	slow server has the ticket expire. The slow server then rejects
	the elections claiming that the ticket is still valid. The safest
	way to proceed seems to be that the fast server simply backups a
	bit and then starts new elections in hope that the slow server in
	the meantime expired its ticket as well.

2014-05-25  Dejan Muhamedagic  <dejan@suse.de>

	Low: raft: count rejects as replies

	Low: raft: don't accept our higher term where we're the origin too

	Low: ticket: don't run the external program twice on reacquire

	Low: ticket: if we're past renewal, set wakeup to ticket expire

	Medium: raft: improve ticket update on status message

	Medium: raft: increment term if election ends in tie

	Dev: add the live_test script

2014-05-24  Dejan Muhamedagic  <dejan@suse.de>

	Low: ticket: don't set wakeup if not necessary

	Dev: main: add debug config option

2014-05-23  Dejan Muhamedagic  <dejan@suse.de>

	Low: ticket: don't include delay commit in next wakeup calculations

	Dev: ticket: improve logging on resends

2014-05-22  Dejan Muhamedagic  <dejan@suse.de>

	build: update the specfile

	Dev: raft: refine logging in ticket reacquire

	Low: ticket: update election log message

	Dev: raft: a candidate hears when another leader is elected

2014-05-21  Dejan Muhamedagic  <dejan@suse.de>

	Low: ticket: update cib sooner rather than later before new elections

	Low: ticket: don't update but copy ticket from the leader's message

	Dev: ticket: set timer on ticket process postponed

	Low: ticket: update CIB if the ticket's not already there

2014-05-20  Dejan Muhamedagic  <dejan@suse.de>

	Low: main: add server id to the status file

	Medium: ticket: update status/startup ticket processing

2014-05-19  Dejan Muhamedagic  <dejan@suse.de>

	Low: ticket: don't print obsolete details for revoked tickets

	Dev: ticket: revoked tickets have leader none

	Medium: ticket: delay ticket processing a bit at startup

	Medium: raft: improve reacquire on startup
	Delay trying to reacquire the ticket for a ticket timeout time,
	that is until all other servers replied to our status request.
	That way we ensure that we have the latest data for the ticket.

	Dev: ticket: log term with ticket info

	Dev: ticket: log commit delay once only

	Low: raft: commit to CIB immediately on restarts when following

	Medium: ticket: run new election on ticket reacquire
	On restart, the leader with the granted ticket should try to
	reacquire the ticket. Running a new election is the cleanest way.
	The other members now allow starting elections from the ticket
	leader for tickets still valid.

	Low: raft: handle better rejects which contain us as the leader

	Dev: ticket: improve commit delay processing
	Move also some functions around, to more appropriate files.

	ticket cron debug

	Medium: ticket: reacquire expired granted tickets (bnc#878359)
	Ticket expiry is not recognized by pacemaker, hence whether the
	granted ticket is old has no effect. Hence, not to surprise the
	cluster unnecessarily, try to reacquire even the tickets which
	are not valid anymore but granted here.

	This may happen if the booth has been down for a long time.

	Medium: config: reacquire granted tickets on start (bnc#877773)
	This should help on reconfiguration, if a site gets a new IP
	address. If the ticket is anyway granted here, we may assume that
	it is not granted elsewhere. Otherwise, that site should let us
	know when we try to reacquire the ticket.

2014-05-16  Dejan Muhamedagic  <dejan@suse.de>

	Dev: ticket: put some order into retries handling

2014-05-15  Dejan Muhamedagic  <dejan@suse.de>

	Medium: improve logging

2014-05-14  Dejan Muhamedagic  <dejan@suse.de>

	Medium: transport: prefer exact address matches (bnc#877669)

2014-05-13  Dejan Muhamedagic  <dejan@suse.de>

	Dev: don't print to stdout on no debug

	Dev: ticket: improve delay_grant processing

	Low: main: no ticket grant/revoke at arbitrators

	Medium: doc: describe server operation in the README

	Medium: rename service-still-runnable to service-runnable

2014-05-12  Dejan Muhamedagic  <dejan@suse.de>

	build: add the service-still-runnable script

	Medium: raft: set ticket wakeup after MY_INDEX (bnc#877356)

	Dev: update debug messages

	Dev: doc: man page update

	Medium: script: fix regexp

	Dev: ticket: run before-acquire-handler on ticket renewal too

	Medium: ticket: allow enforcing immediate grant (bnc#876191)

2014-05-09  Dejan Muhamedagic  <dejan@suse.de>

	Dev: raft: don't reset term and commit_index

	Medium: raft: test for misled lost ticket condition
	Under some split brain conditions, for instance if a follower
	gets separated from the leader, it will eventually consider the
	ticket lost. With connection reestablished, it will try to
	acquire the ticket. We can test here for that kind of situation
	and set the reappearing follower straight.

2014-05-08  Dejan Muhamedagic  <dejan@suse.de>

	Medium: raft: include reason for RPC
	This should help in some corner cases, in particular after split
	brain when a server comes back having established a completely
	wrong picture.

	Dev: raft: fix status reply processing

	Medium: raft: wait a short delay before starting new elections

	Medium: raft: reduce the election timeout to the ticket timeout

	Medium: add booth description to README

	Dev: raft: compare ticket commit_index only if coming from the leader

	Low: raft: accept heartbeats in init state too

	Medium: raft: delay ticket commit to the CIB on manual grants (bnc#876321)
	If a site didn't respond to the leader's heartbeat, under certain
	circumstances that site may still be holding the ticket. In that
	case we delay the ticket commit to the CIB and sending out the
	updates until the ticket expires.

2014-05-07  Dejan Muhamedagic  <dejan@suse.de>

	Medium: raft: don't update the ticket expiry before leader got elected

	Dev: raft: consolidate acks processing

2014-05-06  Dejan Muhamedagic  <dejan@suse.de>

	Medium: raft: fix external program handling
	If the external program fails, we need to tell others to take the
	ticket if we're leaders. Otherwise, on grant, return error to the
	client.

	Medium: raft: send heartbeat only on restart (bnc#876516)

	Dev: some cleanup and log messages

2014-05-05  Dejan Muhamedagic  <dejan@suse.de>

	Low: update the README

	Medium: doc: hawk uses booth, not crm_ticket

	Medium: raft: accept valid heartbeats in the candidate state

	High: raft: elections not allowed if the term's still valid (bnc#876300)
	If we the term is still valid, don't let others start the
	election. It may happen that a follower goes disconnected,
	considers the ticket lost after a while and starts election, then
	comes back and tries to get the ticket which is still valid and
	supported by the majority. The leader, if it loses majority, will
	lose the ticket itself and agree to do new elections.

	Dev: raft: delay setting leader on vote request

	Medium: raft: on vote request reply to sender only

2014-05-04  Dejan Muhamedagic  <dejan@suse.de>

	Dev: raft: add revoke operation

	Dev: ticket: rename client ticket operations

	Dev: raft: separate INIT and FOLLOWER states

2014-05-02  Dejan Muhamedagic  <dejan@suse.de>

	Dev: status: test TCP socket bind instead of UDP (bnc#874139)

	Medium: doc: update the man page and add section on booth ticket management

	Merge pull request #7 from yuusuke/fix_expr
	Fix collision of exp declared by mathcalls.h is avoided.

2014-05-01  yuusuke  <yusk.iida@gmail.com>

	Fix collision of exp declared by mathcalls.h is avoided.
	main.c: In function 'process_connection':
	main.c:219: error: declaration of 'exp' shadows a global declaration
	/usr/include/bits/mathcalls.h:101: error: shadowed declaration is here
	make[2]: *** [boothd-main.o] Error 1
	make[2]: Leaving directory `/root/cluster-packages/y.booth/src'
	make[1]: *** [all] Error 2
	make[1]: Leaving directory `/root/cluster-packages/y.booth/src'
	make: *** [all-recursive] Error 1

2014-04-30  Dejan Muhamedagic  <dejan@suse.de>

	Medium: raft: always run election before acquiring tickets

	Medium: raft: reset expired tickets on load

	High: ticket: query status on startup
	- synchronize starting booth daemons:

	  on startup, we send a status query, others respond with the
	  MY_INDEX if they have newer tickets, or update their own if
	  they have older; follow the leader too if there's one running

2014-04-29  Dejan Muhamedagic  <dejan@suse.de>

	Medium: config: use only address for the site id (bnc#875237)

	High: raft: update election logic
	The election is valid only once we are sure that we heard from
	all reachable parties. Then we can test for majority, etc.
	Otherwise, premature considering majority may not take into
	account possible delayed rejects.

	Medium: ticket: adjust acquire-after use to the manpage

	Medium: doc: clarify the acquire-after use (bnc#874148)

	Dev: raft: don't ignore revokes

	Low: ticket: leader is unsigned

	Low: ticket: reduce number of ticket writes in followers

	Low: raft: don't log erroneously message about different "voted for"

2014-04-26  Dejan Muhamedagic  <dejan@suse.de>

	Low: add some config debug info

	Medium: transport: use local address for address matching (bnc#875148)

2014-04-22  Dejan Muhamedagic  <dejan@suse.de>

	Low: raft: lose ticket sooner rather than later

	Medium: ticket: increment lease time only when majority held
	We need to send a new lease time to others with the broadcast,
	but cannot update our local copy until we reached majority.
	Otherwise, we'd lose the ticket too late.

	The ticket now gets updated with the new RPC which is broadcasted
	after the majority was reached. Otherwise, on losing majority
	which may have happened in the meantime, some followers may have
	different (wrong) information about the ticket expiration time.

	Dev: function rename

	Dev: print expiry time in the debug msg

	Medium: raft: reduce the default timeout to 5 seconds

	Medium: ticket: allow revoke only on leaders
	If a client request comes to another boothd, it will return with
	redirect and it is up to the client to connect to another site.

	Low: ticket: log message when revoking ticket

	Medium: raft: schedule next ticket processing after ticket expiry on followers

	Low: ticket: remove one log message
	When not all acks get received, we actually get to do the logging
	on the next cron due to timing. The warning at that time may just
	confuse users, so better not to say anything. Add ticket name to
	other messages.

	Low: ticket: log more information when broadcasting

2014-04-17  Dejan Muhamedagic  <dejan@suse.de>

	Medium: doc: man page update

2014-04-16  Dejan Muhamedagic  <dejan@suse.de>

	Low: ticket: refine log messages on not all acks received

	Dev: ticket: amend 270f9e to really update the CIB

	Medium: ticket: write ticket to CIB on revoke

	Medium: raft: reset ticket expiry when following another leader

	Medium: raft: no vote on revoked tickets (bnc#872918)

	Medium: raft: increment the term on new election when ticket lost (bnc#873643)

	Medium: raft: don't broadcast req_vote twice on ticket grant

	Medium: raft: expire tickets on no heartbeat acks (bnc#873483)

	Medium: ticket: start election if the ticket was granted to us (bnc#873400)

2014-04-14  Dejan Muhamedagic  <dejan@suse.de>

	Medium: transport: reuse port/address on bind (bnc#873382)

	Medium: ticket: write ticket on majority heartbeat acks (bnc#873175)

2014-04-02  phmarek  <phmarek@users.noreply.github.com>

	Merge pull request #6 from dmuhamedagic/time-casts
	Time casts and build fixes

2014-04-02  Dejan Muhamedagic  <dejan@suse.de>

	build: update the configure compile test

	build: fix generating manpages

	build: add docs/Makefile.am

	build: add docs to automake

	Low: raft: add casts for time_t in log_debug
	Cast time_t arguments to int64_t, otherwise gcc issues warnings
	on format mismatch on 32-bit platforms.

2014-04-02  Philipp Marek  <philipp.marek@linbit.com>

	Get the site-ID hash value from the binary address representation.
	This radically reduces site-ID collisions, see comment in code.

	Check for site_id collision, and ask for a bug report.

2014-03-31  Philipp Marek  <philipp.marek@linbit.com>

	Small cleanup, and comments added.

2014-03-28  Philipp Marek  <philipp.marek@linbit.com>

	Need to check the ticket state later on.

2014-03-27  Philipp Marek  <philipp.marek@linbit.com>

	Merge branch 'raft'

	Prepare for new version.

	Fix compiler warning/error: 'rv' may be used uninitialized...
	Only if the assert() returns, but okay ...

	[  106s] raft.c: In function 'raft_answer':
	[  106s] raft.c:506:2: error: 'rv' may be used uninitialized in this function [-Werror=maybe-uninitialized]
	[  106s]   return rv;
	"osc build" has gcc version 4.8.2 20140306

2014-03-26  Philipp Marek  <philipp.marek@linbit.com>

	On revoke, convert to a follower, as there's no leader anymore.

	Comments and a bit of cleanup.

	Introduce new site for having "no leader".

	Fix uninitialized value being returned.

	Fix segfault and assert() when voting for NONE, ie. revoking the ticket.

	Don't increment the term number continually.?

	fixup! drop unused

	"else if" was needed and meant here.
	Bug didn't have much impact, though:
	 setting value «booth_conf->ticket[0].name» to «"ticket"» (num_conv None)
	   -> gdb  print strcpy(booth_conf->ticket[0].name, "ticket")
	  <-  gdb  $11 = 10245584
	   -> gdb  set variable booth_conf->ticket[0].name = "ticket"
	  <-  gdb  Invalid cast.
	 set_val booth_conf->ticket[0].name done

	Whitespace, and TODO comments.

	Remove unused data in ticket_msg.

	Take a shortcut if no handler command is given.

	Move #define, and define a new constant.

2014-03-20  Philipp Marek  <philipp.marek@linbit.com>

	Unit test 060 fixed for Raft.

	Unit test 20 fixed for Raft.

	Unit test 10 fixed for Raft.

	Check whether the Leader might keep the ticket.
	Perhaps it would have to check whether it's too soon for re-querying?
	No, with sane retries/timeouts that should work fine.

2014-03-19  Philipp Marek  <philipp.marek@linbit.com>

	Unit test 003 "fixed" -- it doesn't test Pacemaker anyway ;{

	Fix unit test 002.

	Unit tests: detect and "handle" (ha!) assert() failures.

	Fixed unit test defaults for Raft.

	Renamed and fixed first unit-test 001.

	Some wire data format changes resp. TODO comments.

	Fix log message output.

	Correctly handle errors during sending, ie. report them.
	"iptables -j REJECT" in the OUTPUT queue is a prime example.

	Remove unused code.

2014-03-18  Philipp Marek  <philipp.marek@linbit.com>

	Raft VI: more refactoring.

	Moved a log message, to include more information.

	Raft V. Retries, Timeouts, Acknowledges.

2014-03-17  Philipp Marek  <philipp.marek@linbit.com>

	Raft, IV.
	Now one node becomes a Leader successfully, and keeps that state -
	even if boothd gets restarted.

2014-03-14  Philipp Marek  <philipp.marek@linbit.com>

	Raft III ...

2014-03-13  Philipp Marek  <philipp.marek@linbit.com>

	Raft II

2014-03-10  Philipp Marek  <philipp.marek@linbit.com>

	Raft, I.

	Removed Paxos.

2014-03-05  Philipp Marek  <philipp.marek@linbit.com>

	Version 0.1.7.

	Use crm_simulate to find out whether granting the ticket makes sense.

	Test whether environment variables are passed to the external handler.

	Unit test: fix single-quoted string injection.

	When we lose the ticket, just tell the others - don't ask around.

	Unit test for the "before-acquire-handler" setting.

	Remove the resource monitor.

	Fix unit test for SIGINT again. Sigh.

	Tell the user about invalid configuration items.

2014-03-03  Philipp Marek  <philipp.marek@linbit.com>

	Replacement for the resource-monitor functionality.
	Works by TODO

	Make interpret_rv() available for other files.

	Move the commandline data so that it can be used in other files.

	Align a few equal-signs.

	Actually store the configuration name, if it's given.

2014-02-27  Philipp Marek  <philipp.marek@linbit.com>

	service-still-runnable: Check whether the resource name is valid.

	Sample script to replace the resource-monitor functionality.

2014-02-24  Philipp Marek  <philipp.marek@linbit.com>

	Version 0.1.6.

	Manual page: some systemd hints.

	Compat: resource monitor and newer libpacemaker.
	log_cib_diff() moved into compatibility.h, which is not provided in
	the package.

2014-02-21  Philipp Marek  <philipp.marek@linbit.com>

	Add include of compatibility header file.
	See pacemaker commit 6953aa52e00c4ddf481254a828f6d7c7826a23b9 for details.

	Systemd: add a condition on the configuration file.

2014-02-20  Philipp Marek  <philipp.marek@linbit.com>

	Systemd mode.

2014-02-19  Philipp Marek  <philipp.marek@linbit.com>

	Remove wrong comment, and fix root cause.
	Thanks for noticing the erroneous "-v", Gao Yan!

	"crm_ticket" calls: Bugfix for "no-owner", workaround for EINVAL rv.

2014-02-18  Philipp Marek  <philipp.marek@linbit.com>

	Drain the Booth output before terminating.
	I had an error once in ~400 test runs in the self.booth.close()
	line below:

	  pexpect.ExceptionPexpect: close() could not terminate
	     the child using terminate()

	Perhaps that was caused by unread data on the pipe; let's try draining.

	There's a pexpect.sendintr(), no need to "kill".

	Unit tests: Ignore EOF when reading Booth output.

	Return an error code to the calling program, too.

	Unit tests: allow an upper limit for the test number, too.

	Changed level of crm_ticket_get() log message.

	Comments added to unit-test script.

2014-02-17  Philipp Marek  <philipp.marek@linbit.com>

	Fix "crm_ticket" simulation: make single quotes optional.

	Fold store_ticket() back into {grant,revoke}_ticket().
	Ensures that store_ticket() can't be forgotten somewhere.

	Atomic ticket operations.
	Needs a recent version of crm_ticket (pacemaker);
	1.1.10+git20140124.96cd194-1.1 is good enough.

	If tests fail early or very late, the setup/teardown info is useful.

	Documentation fix.

	Set the executable bit for unit-test script; "osc build" croaked.

	New version number 0.1.5.

	Disown the ticket only if there's no (proposed) owner.
	Was left uncommitted in my working copy.

	Make the "100_abort-after-retries" unit test work again.
	Currently _all_ the tests run fine.

	When a unit test fails, provide a string output of the wrong value too.
	That makes reading the debug log file quite a bit easier.

	Instead of only

	   «ntohl(((struct boothc_ticket_msg *)buf)->header.cmd)»:
	     got «1349674352», expected «CMD_CATCHUP». ERROR.

	now there are lines

	   ->  gdb  print state_to_string($$)
	   <-  gdb  $52 = 0x6116f8 <cache.12837+40> "Prep"

	From that it's easy to see that instead of the expected CATCHUP
	there's a PREPARE in the message.

	Unit tests: Fix variable name and debug output confusion.

	Repair unit test for retries.

	Unit test: comment out one test, needs implementation.
	See ballot_is_higher_than() for details.

	Unit tests: write the logfile filename into the overview, too.
	Makes reading details via "gF" easier ;)

	README-testing updated.

	Fix automated tests on hosts where "hostname -i" returns multiple results.

2014-02-12  Philipp Marek  <philipp.marek@linbit.com>

	Changed version to 0.1.4.

	Change the (too clever) STATE_STRING() macro to a normal function.
	Tim Serong told me about problems with the old approach.

	Take the longest expiry time, like we're using the maximum ballot number.

	Updated "README-testing", and watchpoints for unit-tests.

	One more case for initial catchup state.

	When starting up, and ticket is not acquired, but should be, set wakeup timer.

	New unit test: we must not lose the ticket if it's still valid.
	That test did fail until just a few commits before.

2014-02-11  Philipp Marek  <philipp.marek@linbit.com>

	Unit tests: For failures print the is-value as well, and in the same order as above.

	Unit tests: kill old processes before starting.

	Unit tests: Highlight the failure line(s).

	Provide the decimal site_id too; makes verifying "crm_ticket -L" easier.

	After CATCHUP we need to schedule for further work.
	Perhaps we have to acquire the ticket, eg. if we're the earlier site to
	come back, with an arbitrator alive.

	Fix CATCHUP answer: only tell old news.

	Losing a ticket shouldn't cancel an ongoing proposal.

	TODO comment added.

	When receiving an OP_COMMIT, say that it was received.

	Make "revoke" on a revoked ticket return success immediately.

	After losing a ticket we need to do do other jobs as well.

	Bugfix: time comparison was wrong way around.

	Incrementing the retry counter is done by ticket_activate_timeout().

	Losing the ticket has to happen in every state.

2014-02-10  Philipp Marek  <philipp.marek@linbit.com>

	Unit tests: broadcasted packets were seen multiple times, once for each site.

	Bugfix: lose ticket during PREPARE even if there are retries left.

	New unit test: abort PREPARE, lose ticket.
	Does fail in the current version.

	Test failures: don't go interactive if not on a terminal.

	Wait a limited time to reach a specific breakpoint.

2014-02-06  Philipp Marek  <philipp.marek@linbit.com>

	Unit tests: allow setting the state during a running test.

	Prettify log output: cleaned up "returned rv rv 1".

2014-02-05  Philipp Marek  <philipp.marek@linbit.com>

	Log when a COMMIT message is ignored.

	Indentation changed.

	README-testing updated.

	Unit-tests, updated and got them working.
	TODO: fake crm_ticket with checks.

2014-02-04  Philipp Marek  <philipp.marek@linbit.com>

	Fixed the retry logic.
	When the ticket owner gets no answer on her PROPOSING pleas,
	she has to fall back to PREPARING at some time.

	Test for some more bad unit-test statements.

	Make sure the default for acquire_after is 0.

	Provide «test file»:«line number» in debug and error outputs.
	VIMs "gF" is your friend.

	Check for wrong names/mistypings when settings values.

	Fix: check whether automatic ticket activation is allowed.

	Omit the (empty) "PartN" messages in the logfile.

	Allow "acquire-after=0" to disable automatic activation, too.

	First unit test updated.

	Don't quit upon the first check_value() failure, so that the log has more data.
	The other values might help to diagnose problems.

	More documentation about the ballot number range.

	Use colors in test output, for easier readability.

2014-02-03  Philipp Marek  <philipp.marek@linbit.com>

	Fix comment/description of unit-tests/003_pacemaker.txt.

	Fix syntax of unit-tests/002_bad_packets.txt.

	Unit tests: Put a textual description what is being tested into the logfile.

	Unit tests: Close and detach the per-test logfiles after running that test.

	Store the previous ballot value on catchup.

	Unit tests: remember whether the debuggee is running or not.

	Unit tests: fixed wrong indentation.

	Unit tests: Allow starting from an arbitrary file.

2014-01-30  Philipp Marek  <philipp.marek@linbit.com>

	For future enhancements: add authentication data.
	As discussed on the mailing list: not used now, but easier to add if
	the packet format on the wire doesn't change.

	Drop priviledges only after using them.
	Neither scheduling nor memlock() wishes are successful when not root.

	The "retries" value has to be copied to tickets, too.
	It was left at 0 ... which meant no retries, and didn't work that good.

2014-01-24  Philipp Marek  <philipp.marek@linbit.com>

	Removed some debugging code again. Failed compilation via OSC.

	Fix compiler warning/error 'unused result'.

2014-01-23  Philipp Marek  <philipp.marek@linbit.com>

	Man page updated.

	Basic implementation of running as hacluster:haclient instead of 0:0.

	Renamed a function to avoid tag lookup clashes.

	New version number.

	Try to get the man page installed as well.

	Fix usage output and option string.

	Unit test for retry counter.

	Documentation (manpage) updated.

	Make transmission retries configureable.

2014-01-22  Philipp Marek  <philipp.marek@linbit.com>

	Merge copyright date branch.

	Ticket lost => catchup requests; re-acquiration if allowed.

	Make sure that the two bits are set, to get an agreement.

	Helper functions regarding calculating points in time.

	Correctly (ha!) set the wakeup time for a ticket, depending on the state.

	New function to compare "struct timeval"s.

	Ensure best available precision for floating point result.

	Return to ST_STABLE when ticket got acquired.
	Needed so that paxos_start_round() accepts new requests.

	Fix log message grammar.

	New function to set the next wakeup time (cron) for a ticket.

	Comments updated.

	Bugfix: Don't send OP_REJECTING for a valid OP_PROPOSING.
	Bug introduced in 515333f.

	A late PROPOSE packet might see an already-taken state.

	Don't propose again if we'd already known about that promise.

	Log messages.

	When getting a REJECTED, learn from it the current ballot numbers.

	Ignore packets that arrive too late.

	Whitespace fixups.

	When receiving a broadcast packet answer, wait whether all sites agree.
	For that we need to know when the first answer came in.
	Split OP_PREPARING and OP_PROPOSING cron handling again.
	Made "state change now allowed" a bit more granular.

	Reset bitmask and retry counter only if state is changing.

	Fixed (C)opyright year in files touched that year.

2014-01-21  Philipp Marek  <philipp.marek@linbit.com>

	New helper function.

	Renamed a function: answer_REJ() to handle_REJ().
	There's nothing to reply to a rejection.

	Higher precision for the cronjob-timestamps.
	Needed so that "waiting half a second for answer" won't really mean [0,2[.

	Clarify that the output is a hex bitmask.

	Fix error text.

	Fixed wire-to-CPU return code translation.

	Make two error messages prettier.

	When looking for an address, take the best match, not the first one.
	With client requests and IP addresses in the same subnet (might happen
	easily with IPv6) the client request should be sent to the local node,
	if possible, so exact matches are preferred.

	Fixed "-c" parsing for name-only data, ie. no path and no suffix.

	Make "boothd list" show the current ballot number, too.

2014-01-20  Philipp Marek  <philipp.marek@linbit.com>

	Catchup: store the higher of the ballot numbers.

	Debug message telling about the taken catchup clause.

	Additional condition for catchup processing.

	Say that an arbitrator is not allowed, instead of "site not found".

	Enclose state strings in single quotes.

	Fix constant calculation - copy+paste bug.

	Whitespace fixed.

2014-01-17  Philipp Marek  <philipp.marek@linbit.com>

	Pacemaker state faking - not tested yet.

2014-01-16  Philipp Marek  <philipp.marek@linbit.com>

	Some more unit tests for bad network messages.

	New function, small cleanups to get booth log output into the logfile.

	Removed unused code.

	Make the result enum readable on the wire; and use a macro for readability.

	Move expected message rejects into a new test file.

	Do the unit-tests in sorted order (by default, at least for now).

	Some more unit-test description.

	Print comment for "outgoing", too.

	Cleanups regarding key => variable translation, and ticket state checks on "outgoing".

	Allow to comment messages for the logfile.

	Lost the first test file during rebasing.

2014-01-15  Philipp Marek  <philipp.marek@linbit.com>

	Merge branch 'unit-tests'

	Bugfix: need to set myself as local when testing, too.

	Make UDP receive buffer smaller. (?)

	Fix exception output in case a testcase breaks.

	Make interactive debugging a bit nicer.

	A first test that already suggested a few enhancements.

	Fix message injection logic.

	Bugfix for wrong variable address.

	fixup finally

	Fix field location.

	Provide a final check, too.
	Perhaps that might be useful to check after message
	reception (without outgoing communication), too.

	GDB output is multi-line.

	The port for UDP communication has to be passed as integer.

	Make boothd output visible in the logfiles, too.

	The unit tests use htonl() for non-string data implicitly.

	The *sender* always must be valid - we don't allow 3rd party opinions.

	Reject OP_CATCHUP with invalid result codes.

	Still prettier output on failures.

	Removed an empty line.

	Pretty print which test went wrong where.

	Logging to console "fixed".

	First unit test passes.

	Unit-tests VIII.

	Unit-tests VII.

	Unit-tests VI.

	Unit-tests V.

	Unit-tests IV.

	Unit-tests III.

	Unit-tests II.

	Unit-tests I.

	Allow to define the site to use for testing.

	state picture -- 0 TODO

	Print a meaningful error message instead of just the usage information.

	Show a pretty representation of the "crm_ticket" exit code.

	Fix compiler warning/error about "const"/non-const.

	Allow "-" in configuration keys too, eg. "acquire-after".

2014-01-10  Philipp Marek  <philipp.marek@linbit.com>

	Fix compile warning/error for 32bit builds, and OSC builds.

2014-01-08  Philipp Marek  <philipp.marek@linbit.com>

	Extended .gitignore with a few more patterns.

	"boothd client grant" was broken since a few revisions.
	Hooray for the tests!

	Some more tests are working again.

2014-01-02  Philipp Marek  <philipp.marek@linbit.com>

	Indentation changes.

	Cleanup/simplification for command line parsing.

	Reduce the text width a bit.

	Some changes to make a few tests work again.

	Start tests with a clean slate.

	Simplification: assume ticket name if needed but not given.

	When all participants are unsure about the real state, let them converge upon the highest ballot number.

	Activating the timeout means needing a retry.

	Two log messages, to see why some operations didn't work out.

	Silently ignore a delayed message.
	Happens if we get the same proposal again, but already have the state.

	When accepting a change, actually save the change to Pacemaker, too.

	Fix indentation for switch block.

	Like the comment says - header.result is used for CATCHUP, and might be non-zero then.

	ticket_broadcast_proposed_state() says to send a _proposal_, so fix the owner.

	Fixed documentation bugs. Thanks, Tanja!

	Use a single ticket state instead of proposed/current members.
	Sigh. Sadly another big rewrite - but that's unavoidable, the
	whole state logic depends on that data format.

	Let's hope that it works better this time; at least, now it's
	unambigous which member holds which value.
	(Previously, did current->prev_ballot have an older/same/newer
	value compared to proposed->ballot? Etc.)

	Should be a bit more resistant against delayed messages; more
	conditions when receiving messages might help.

	Conflicts:
		src/config.h

	First parts to automatically acquire a ticket (failover).

2013-12-31  Philipp Marek  <philipp.marek@linbit.com>

	CMD_CATCHUP is no longer done over TCP.

	Removed unused constants and code.

	Just exit() on an allocation error.

	Make booth_conf->site_bits 64bit, same as ticket_conf->proposal_acknowledges.

	Fixed returning a possibly uninitialized variable.

	Warning message for an even number of participants.

	A ticket only has a single state; move the member out of the paxos state.

	Fix comments, and store the proposer of a change.

	Set energy saver as default; convenience functions regarding ticket cron jobs.

	TODO comments added.

	Energy-saving mode.

	Move comment to the correct place.

	Use available variable.

	Lose ticket if there's no renewal.

	Debugging: assert that no wrong acknowledge bits can get set.

	Split the paxos_answer function in multiple smaller functions.
	This prepares for some cleanups and simplifications.

	Log message changed.

	Fix compiler warning/-Werror.
	http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40635 applies, though.
	Even if "rv" in main is renamed:
	  main.c:1232:18: error: ‘rv’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
	    return (rv >= 0 && rv < 0x70) ? rv : 1;

	Putting parenthesis around an expression for clarity.
	Nevertheless I still get a bogus compiler error:
	 |main.c: In function ‘main’:
	 |main.c:1231:18: error: ‘rv’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
	 |  return (rv >= 0 && rv < 0x70) ? rv : 1;
	 |                  ^
	WTF?

	Allow a simple config name for "-c" instead of a complete path.

	Bugfix: forgot to remember the parsed weights.

	Split the config file path into separate pieces.

2013-12-12  Philipp Marek  <philipp.marek@linbit.com>

	Build a docbook XML from the manpage, too.

2013-12-06  Philipp Marek  <philipp.marek@linbit.com>

	Use the correct name, even if they have the same value.

	Define a default port, too.

	Changed version number.

	First manpage draft in asciidoc, along with a Makefile.

	Make sure that for CLIENT calls "local" is set as well.

2013-12-05  Philipp Marek  <philipp.marek@linbit.com>

	Make NO_OWNER translate into -1 instead of 4294967295.

	Remove unused member.

	Bugfix: ticket_broadcast_proposed_state() overwrites the state, so set afterwards.

	Give a log message when trying to renew a ticket.

	Initialize the variable to a saner value.
	Before the cleanup it was set in timerlist_init().

	Two Copyright notices I forgot before.

	Some bits of cleanup - code that is not used anymore.
	I may need to re-introduce some more later on, though.

	Removed unused tcp_conn structure.

	First working version of a complete PAXOS exchange.
	Needs a clear sky and no earthquakes.

	Specify the return code and that paxos_state that should be used for initializing.

	Moved preprocessor macros, so that they can be used everywhere.

	New function to get the owner name from a pointer.

	New function init_header_bare() split out.

	Fix constant's value.

	Correctly return RLT_ASYNC for pending client operations.

	Better return value checking for client operations.

	Sanity check for ticket argument in client.

	Remove unused variable.

	Function to calculate the next ballot number.
	The weights can now include 0, as the local bitmask is always added.

	Renamed "node[_count]" to "site[_count]" in "booth_conf".

	Rename a variable "node" to "site".

	Store a 0-based number for referencing the weights.

	First parts of PAXOS logic.

	Changed a few constants - again.

	Handle periodic jobs for tickets via a cron-function.

	Store a bit array of who has acknowledged some state.

	Preprocessor macro to convert nicely-defined consts to ASCII.

	A caller might not have a ticket_paxos_state to initialize from.

2013-11-29  Philipp Marek  <philipp.marek@linbit.com>

	Provide a SIGUSR1 handler to log the ticket data.

	Move initialization functions, copy data into msg->ticket.

	Reduce minimum timeout to 1 sec.

	Store a per-node single-bit bitmask.

	Make a per-ticket-timeout configurable, too.

	Make the Pacemaker functions take a struct as arguments.

	Change the timer callback to a void*.

	Client: if no site is given, connect to local site.

	Always send the validity period in catchup answers, even if we're not the owner.

	Fix result check, and remove dead definitions.

	Ensure that owner and expiry are in sync.

	New inline function to get the validity period left.

	Change constants again, for easier readability.

	Removed old debug lines.

	Removed the tcp list, and make TCP socket cleanup work.

	Debug log lines.

	Move the log lines so that the text is correct.

	Removed an unused function.

	CMD_LIST may go to remote clusters as well.

	Bugfix: there're 8 bits in a byte.

	Bugfix: return date and time. Only the year is not enough.

	Comment added.

	Remove wrong check - on success do_read() returns 0.

	Wireshark dissector updated.

	Sanity checks for the ticket name - duplicates, characters allowed.

2013-11-28  Philipp Marek  <philipp.marek@linbit.com>

	Dissector updates.

	Make initial catchup exchange work.

	Moved string check functions, added skip_while_in().

	Small bugfixes - segfault and assert().

	First prototype of a wireshark dissector; change the command enum.

	Async CMD_CATCHUP at startup.
	We need to do that non-blocking, so that they can answer queries from
	other, simultaneously rebooted, sites during startup.

	UDP cleanups.

	Comments added.

	Provide a close callback for UDP.

	Comment and reordering of static variables.

	Renamed function "ticket_recv()" to "message_recv()".

	Store the transport along with the client information.
	That allows differentiating whether the filehandle needs to be closed
	after communication (eg., accepted TCP socket), or whether it just
	stays opened (eg. UDP).

	Renamed "client"/"pollfd" to "-s".

	Renamed "add_node()" to "add_site()".

	Some more major surgery.

	New function owner_and_valid().

	New function send_ticket_msg().

	FIXME - full matrix of transport operations

	Another rename.

	Function renamed.

	Renamed "nodeid" to "site_id".

	Rename "booth_node" to "booth_site".

	New function send_header_plus().

	Local variable for file descriptor.

	Function renamed

	New function ticket_answer_list().

	New function send_header_only().

	Rename a few constants.

	Conf parsing: Change the "expire" and "weights" syntax.
	These are now moved into new lines, and work for the previous ticket and as defaults for the later ones.

	Only realloc the tickets in the ticket_realloc() function.

	check_max_len_valid(): Fix wrong length check, make input const.

	Cut and waste. Compiles, but does not link.

	Fix data types for pacemaker API.

	Calculate the node_id via CRC.
	This ensures that all agree on a value, even for different configuration orders.

	Renamed constants.

	TODO comments.

	Some unsorted changes.

2013-11-15  Philipp Marek  <philipp.marek@linbit.com>

	whitespace??

	Logging and main() flow cleanups.

	Whitespace again.

	Return the correct error code, the latter fcntl() might reset errno.

	Whitespace fixes.

	Bugfix for unquoted value tokenizing in configuration.

	Config file parser cleaned up.

2013-11-14  Philipp Marek  <philipp.marek@linbit.com>

	Revert "The library doesn't take that many arguments."
	This reverts commit 08255a7e56468eb21a6cf54fa40ff1b68c5416f0.

	Make UDP the default transport.

	Remove unused trash.

	Whitespace changes.

	Derive the lockfile path from the config name, to allow multiple instances.

	Change message, so that the ":" in ipv6 doesn't conflict with the port specification.

	Try to parse the address string in the configuration as both IPv4 and IPv6.

	Search for local IPv6 addresses as well.

2013-11-13  Philipp Marek  <philipp.marek@linbit.com>

	Bugfix for status: «no PID file» means «not running».

	Restrict access to the lockfile for "others".

	Fix the RA agent for real.
	# ocf-tester -n p_booth -v /usr/lib/ocf/resource.d/pacemaker/booth-site
	...
	/usr/lib/ocf/resource.d/pacemaker/booth-site passed all tests

	Provide the PID of the process holding the file lock, in case the contents are damaged.
	Thanks, LGE!

	Changed RA to use current start/stop semantics.

	Multi-tenancy compliant LSB script.

	Change command line arguments to "daemon"/"status".

	boothd_LDLIBS isn't used by the generated Makefile; put that into LDFLAGS.

	Show basic daemon information in ps output.

	New function to translate a type into a string.

2013-11-12  Philipp Marek  <philipp.marek@linbit.com>

	Make startup message depend on configuration, not on parameters.

	Whitespace fixes.

	First shot of multi-tenancy (FATE 316123) in initscript.

	Remove unused parameter.

	Don't blindly kill, but use the queried PID.

	Write the configuration name into the PID file, too.

	Whitespace.

	Log which file is being used.

	Make sure that there's no half-read configuration in RAM.

	Give the configuration a name, derive that from the filename.

	Don't use "killall" or a hardcoded lockfile in the RA script.

	Report information about the running daemon for "status".

	Write a bit more data into the PID file.

	New status check command line argument.

	New "try_only" parameter for setup_udp_server.

	Rename local variable to something meaningful.

	Split lockfile function into two, and fix whitespace.

	Merge two enums for the node type/role into one.

	Whitespace changes.

	Give a nice error message before daemon()izing.

	Set "local" early enough.

	Rename local variable.

	Change "local" to be a pointer to an existing node.

	Rename parameter.

	Generalize the do_list() function a bit.

	Differentiate between the pure address length and the sockaddr length.

	Fix infinite loop when writing fails.

	Provide a local_transport pointer, use it, cleanup the local communication a bit.

	Allow a NULL destination in that close, too.

	Store the full sockaddr_in for each node, calculate it once.

	Sorted the booth_node members to show data groups.

	Renamed booth_node's "addr" to "addr_string".

	Renamed argument.

	Change version for a distinction.

	Use already defined type.

	"unsigned char" is a bit safer, but raises warnings/errors with strncmp() etc.

	New structure definition for on-wire data; and use it for communication.

2013-11-08  Philipp Marek  <philipp.marek@linbit.com>

	New function to safely test max length of string data.

	Make the type what it really is.

	Report correct (bad) file descriptor, and mark fd as dead if it is.

	New function find_site_in_config(), and use it.

	Ensure some 0-termination.

2013-11-07  Philipp Marek  <philipp.marek@linbit.com>

	Change the transport functions to use a booth_node as ID.
	Then store the TCP filedescriptor (if used) in there, too,
	and don't pass it around like a success value.

	We use TCP and/or UDP sockets; PF_UNIX only gets in the way.

	The library doesn't take that many arguments.

	Rewrite ticket_broadcast().

	Provide (and use) an inline function to get the current transport.

2013-11-06  Philipp Marek  <philipp.marek@linbit.com>

	A cluster node now asks on the local service IP if there's no local daemon.

	Make find_myself() able to find a node that's locally reachable.

	Config parsing - extract some code into a function add_node().

	Parse the IP addresses directly during config parsing; don't loop over find_myself().
	This saves sending/receiving the same netlink messages multiple times.

	Initialize the buffer before every use.

	Extended .gitignore with some more patterns.

	Use the configured port for TCP, too.

2013-11-05  Philipp Marek  <philipp.marek@linbit.com>

	Some additional libraries need to be specified for linking.

2013-10-17  Dirk Mueller  <dmueller@suse.com>

	Merge cc_supports_flag implementation from pacemaker
	Main change is:

	Check for compiler flags with -Werror

	For example for -fstack-protector, it is accepted by gcc for
	all targets, however those targets where it is actually not
	supported, it will print a warning like

	"-fstack-protector is not supported for this platform"

	which raises an error when using -Werror later. So better
	not add -fstack-protector then to the CC_EXTRA_FLAGS

2013-06-25  yuusuke  <yusk.iida@gmail.com>

	Correction of the problem by which booth_resource_monitord was not contained in "make rpm".

	Correction of the problem that is the compilation error when combined with the latest Pacemaker.

2013-06-18  Xia Li  <xli@suse.com>

	Return the correct daemon state.

	Add "starting" and "started" to better reflect daemon state to the caller.

2013-05-27  yuusuke  <yusk.iida@gmail.com>

	Correction for merging into the sauce tree of booth

2013-05-24  yuusuke  <yusk.iida@gmail.com>

	Implemented the monitoring function of the resource to depend on the ticket.

2013-03-19  yuusuke  <yusuke.iida@gmail.com>

	Changed a level of the log to tell that the expiration date of the ticket expired.

2013-02-18  yuusuke  <yusk.iida@gmail.com>

	correction to let existing master do preferential lease. Signed-off-by: yuusuke <yusk.iida@gmail.com>

2013-01-10  Xia Li  <xli@suse.com>

	modified the 'rcbooth-arbitrator status' that it should only show 'Running' if a boothd is running in arbitrator mode.

2012-12-05  Yuichi SEINO  <seino.cluster2@gmail.com>

	Fixed:booth fails in realocating a memory When we set more than 17 tickets, booth causes "segmentation fault". I add typecasting because the calculation of pointer is incorrect.

2012-09-26  Yuich SEINO  <seino.cluster2@gmail.com>

	Add function:booth client can use the host name.

2012-07-31  Yuich SEINO  <seino.cluster2@gmail.com>

	spec: add booth.spec.in file
	Add the booth.spec.in file to be able to build RPM package, it has been
	tested on RedHat 6.2.

2012-07-30  Jiaju Zhang  <jjzhang@suse.de>

	Makefile.am: enable matching non-annotated tags

2012-07-26  Yuich SEINO  <seino.cluster2@gmail.com>

	Fixed:change return value.

2012-07-21  Jiaju Zhang  <jjzhang@suse.de>

	Check the validity of lease retry and renew operations

2012-07-08  Jiaju Zhang  <jjzhang@suse.de>

	Merge branch 'master' of git://github.com/thesues/booth

2012-07-06  dongmao zhang  <deanraccoon@gmail.com>

	add icon for booth

2012-07-06  Jiaju Zhang  <jjzhang@suse.de>

	Fix the wrong timer assignment while catching up

2012-07-02  Yuich SEINO  <seino.cluster2@gmail.com>

	Fixed:Change initial round

2012-06-29  Yuich SEINO  <seino.cluster2@gmail.com>

	Fixed:Acceptor log error mistake

2012-06-20  Jiaju Zhang  <jjzhang@suse.de>

	Fix the wrong error message when multiple booth daemons being started.
	This patch fixes the regression which was introduced by commit c93995ed,
	we move all of the initialization before daemonization happens, thus lost
	the protection which was provided by lockfile(). So fix it now.

	Reported-and-Tested-by: Yuich SEINO <seino.cluster2@gmail.com>

2012-06-14  Jiaju Zhang  <jjzhang@suse.de>

	Disable the cast-align warnings

2012-05-29  Florian Haas  <florian@hastexo.com>

	build: no need to link to glib2
	glib2 is a compile-time dependency only, no need to link against it.

	Fixes Debian build warning:
	dpkg-shlibdeps: warning: dependency on libglib-2.0.so.0 could be avoided if "debian/booth/usr/sbin/boothd" were not uselessly linked against it (they use none of its symbols).

	build: properly test for libplumb, remove useless -lplumbgpl
	Add an AC_CHECK_LIB test for cl_log, autoconf automatically adds
	this to LIBS. No need to explicitly specifiy -lplumbgpl.

	Fixes Debian build warning:
	dpkg-shlibdeps: warning: dependency on libplumbgpl.so.2 could be avoided if "debian/booth/usr/sbin/boothd" were not uselessly linked against it (they use none of its symbols).

	build: use AM_CPPFLAGS instead of INCLUDES
	AM_CPPFLAGS is preferred over INCLUDES:
	http://www.gnu.org/software/automake/manual/html_node/Program-Variables.html

	build: simplify check for glib2
	Instead of hand-crafting a pkg-config check, just use the
	PKG_CHECK_MODULES autoconf macro.

	build: don't uselessly link against dl and rt libraries
	dpkg-shlibdeps reports boothd uses none of the symbols exported
	by libdl and librt.

	dpkg-shlibdeps: warning: dependency on libdl.so.2 could be avoided if "debian/booth/usr/sbin/boothd" were not uselessly linked against it (they use none of its symbols).
	dpkg-shlibdeps: warning: dependency on librt.so.1 could be avoided if "debian/booth/usr/sbin/boothd" were not uselessly linked against it (they use none of its symbols).

2012-05-28  Yuich SEINO  <seino.cluster2@gmail.com>

	Fixed:tcp listener error and trivial fix

2012-05-23  Florian Haas  <florian@hastexo.com>

	man pages: invoke help2man with -s 8
	Invoke help2man with -s 8 so it actually builds section 8 man pages.
	Without this flag, the .8 suffix isn't in line with the
	files' actual contents.

2012-05-07  Jiaju Zhang  <jjzhang@suse.de>

	booth 0.1.0

2012-05-07  Guangliang Zhao  <gzhao@suse.com>

	Correct the return value when running grant/revoke command failed

2012-05-04  Guangliang Zhao  <gzhao@suse.com>

	Get the highest ballot when catchup

2012-05-03  Guangliang Zhao  <gzhao@suse.com>

	Add lease ownership checking when releasing the lease

2012-04-21  Guangliang Zhao  <gzhao@suse.com>

	Add error handling when call ops of p_op

	Remove reject of paxos_msghdr

	Add judgment before use acceptor.plv

2012-04-20  Guangliang Zhao  <gzhao@suse.com>

	Add support for sync revoke of ticket
	When revoke a ticket, we always need wait a long time (may be
	DEFAULT_TICKET_EXPIRY sometimes) now. Revoke time can be greatly
	shortened with this patch.

2012-04-14  Guangliang Zhao  <gzhao@suse.com>

	modify gitignore for ignore cscope and ctags files

	memory leak of proposer_propose and paxos_propose

2012-04-09  Yuusuke Iida  <iidayuus@intellilink.co.jp>

	When a expire was not set on a ticket, made modifications to use the default value.

2012-04-09  Jiaju Zhang  <jjzhang@suse.de>

	Remove "-f" option in grant and revoke commands
	The "-f" option in grant and revoke commands had intended to provide
	a method to bypass the paxos algorithm hence provide the user a totally
	manual way to manage the ticket. However, because the usage of "-f"
	often confused the user and also crm_ticket commmand in pacemaker can
	provide the same functionality, so remove the "-f" option now.

2012-03-31  Jiaju Zhang  <jjzhang@suse.de>

	Code cleanup and trivial fix
	1) Keep 8-char-indent coding style
	2) Remove unnecessary empty lines
	3) Add missing header file

2012-03-31  Dongmao Zhang  <dmzhang@suse.com>

	Fix some usability issues
	1) Prohibit re-granting an already granted ticket.
	2) Revoke command will be waiting until the operation was executed.
	3) Improve log output for connect_nonb function.

2012-03-27  Adam Spiers  <aspiers@suse.com>

	Fix tests to deal with addition of ticket_catchup() to setup() phase (f16e6d1a)
	Now boothd site/arbitrator will hang in setup phase while attempting to connect
	to an unreachable peer during ticket_catchup().  In a test environment we don't
	have any reachable peers.  Fortunately, we can still successfully launch a
	daemon by only listing our own IP in the config file.  But now our tests now
	have to explicitly say whether they expect the server to successfully start up
	via a new expect_daemon argument to ServerTestEnvironment.run_booth().

	Refactor code duplication between do_grant() and do_revoke()

	Add some debug messages during ticket_catchup()

	Add messages warning of expected errors in test output.

	Use strerror(3) in more places

2012-03-26  Jiaju Zhang  <jjzhang@suse.de>

	Invoke the new crm_ticket command in pacemaker

2012-03-26  Dongmao Zhang  <dmzhang@suse.com>

	Add a timeout on TCP connect

	Add missing header file "time.h"

2012-03-23  Jiaju Zhang  <jjzhang@suse.de>

	Notify pacemaker about the ticket status after catching up

	Enhance the ticket information catch-up from other sites

2012-03-23  Adam Spiers  <aspiers@suse.com>

	Improve error reporting (bnc#749798)

2012-03-21  Adam Spiers  <aspiers@suse.com>

	Fix github issue #13 - compile should not fail when help2man is installed.
	See also: https://bugzilla.novell.com/show_bug.cgi?id=753276

2012-03-20  Jiaju Zhang  <jjzhang@suse.de>

	Add "--force" option when calling crm_ticket command
	Since pacemaker has changed the implementation of crm_ticket
	command, so we need to add the "--force" option here.

2012-03-20  dongmao zhang  <deanraccoon@gmail.com>

	improve output of booth list

	fix output of booth list, remove an error info

2012-03-19  Adam Spiers  <aspiers@suse.com>

	Ensure boothd is not running before starting any test

2012-03-18  Jiaju Zhang  <jjzhang@suse.de>

	Deliver revoke operation to each cluster site

2012-03-13  Jiaju Zhang  <jjzhang@suse.de>

	Rework catch-up functionality

	Fix compiling error on some architecture after adding -Werror

2012-03-13  Yuusuke Iida  <iidayuus@intellilink.co.jp>

	Correction of the problem that daemon starts in foreground by a value of HA_debug.

2012-03-12  Adam Spiers  <aspiers@suse.com>

	Add -Werror to CFLAGS

	Fix "warning: ‘addrlen’ may be used uninitialized in this function"

	Don't try to unlink lockfile if we failed to create one.

2012-03-12  Jiaju Zhang  <jjzhang@suse.de>

	Rework del_timer function (bnc#751703)

2012-03-11  Jiaju Zhang  <jjzhang@suse.de>

	Fix paxos lease renew issue (bnc#751485)
	If the site which has paxos lease becomes the minority, it should
	not be able to renew the lease, but current code has bug in this
	scenario, this patch fixes it.

	Fix compiling warnings on x86 architecture

	Fix compiling warnings on x86_64 architecture

	Enhance log output in paxos implementation

2012-03-10  Jiaju Zhang  <jjzhang@suse.de>

	Fix typo when refactoring the code

	Change default configuration file to /etc/booth/booth.conf

2012-03-09  Adam Spiers  <aspiers@suse.com>

	Fix "warning: too many arguments for format"

	Fix "warning: assignment discards qualifiers from pointer target type"

	Fix "warning: no previous prototype for 'safe_copy'"

2012-03-08  Adam Spiers  <aspiers@suse.com>

	Add missing import of 're'.
	For some reason, this causes test failures on SLES11 SP2 but not on openSUSE 12.1.

2012-03-08  Jiaju Zhang  <jjzhang@suse.de>

	Merge branch 'master' of git://github.com/thesues/booth

2012-03-07  Adam Spiers  <aspiers@suse.com>

	Fix config file parser to cope with trailing whitespace at end of lines (bnc#749551)

	Fix bug with parsing of files with no final new-line (bnc#749551)

	Test how config file parser deals with invalid transport protocol value

	Check transport line is not missing from config file (bnc#749551)

	Test debug mode (-D)

	Test how config file parser handles missing quotes (bnc#749551)

	Test a working configuration file

	Make daemonization happen later, after setup (bnc#739015)

	log errors when setup_transport() fails

	Fix buffer overflows with -s and -t CLI options (bnc#750256)

	The beginnings of a test suite.
	Has failures at this point due to known issues,
	which will be fixed by subsequent commits.

	Added -c option to specify alternate config file,
	and -l option to specify alternate lock file;
	without these it's pretty much impossible to test
	cleanly or in a non-root environment.

	config.c: make parser error messages and variable names more useful

2012-03-07  dongmao zhang  <deanraccoon@gmail.com>

	fix cpu 100%, while using tcp

2012-03-07  Adam Spiers  <aspiers@suse.com>

	Refactoring: extract initialization code from loop() into setup()

	fix type of booth_config->proto

2012-03-06  Adam Spiers  <aspiers@suse.com>

	Avoid tabs in STDOUT in case terminal doesn't use 8-column tabs.

	main.c: Fix compile warning and usage output in read_arguments()

	Fix warning about signedness of boothc_header.len

	Refactor code duplicated between do_site() and do_arbitrator()

	Add .gitignore

2012-03-06  Dejan Muhamedagic  <dejan@suse.de>

	Use cl_log for logging
	Currently the boothd is forking with popen and also using pthread
	for logging, there are often some tricky issues when combining
	pthreads and forking. So use the log library to avoid this issue.

2012-03-05  Guangliang Zhao  <gzhao@suse.com>

	Fix error handling problems of function do_arbitrator and do_site

2012-03-04  Jiaju Zhang  <jjzhang@suse.de>

	Fix ticket automatic failover issue between different sites

2012-03-02  Jiaju Zhang  <jjzhang@suse.de>

	Get the correct ballot number if the proposer has ever been down

2012-02-29  Jiaju Zhang  <jjzhang@suse.de>

	Merge branch 'master' of git://github.com/aspiers/booth

2012-02-29  Adam Spiers  <aspiers@suse.com>

	Fix 'gloablly' typo (bnc#746362)

2012-02-29  Jiaju Zhang  <jjzhang@suse.de>

	Add the LEARNER role to the arbitrator

2012-02-28  Jiaju Zhang  <jjzhang@suse.de>

	Add needed timers when doing catchup

	Reset proposer state to INIT if paxos round failed

2012-02-13  Jiaju Zhang  <jjzhang@suse.de>

	Remove unsupported command line parameter
	Changing the expiry time dynamically is not supported, for now we
	only support changing the expiry time before starting the whole
	booth cluster. This can be achieved by modidying the booth config
	file. So removing the "-e" parameter here.

2012-02-12  Jiaju Zhang  <jjzhang@suse.de>

	Implement booth client list command

	Implement ticket revoking functions

	Revoke the ticket in CIB when ticket expires

2012-02-10  Florian Haas  <florian@hastexo.com>

	documentation: build man pages with help2man

2012-01-15  Jiaju Zhang  <jjzhang@suse.de>

	Makefile.am cleanup

2012-01-12  Jiaju Zhang  <jjzhang@suse.de>

	Set proposer state to PREPARING at the right place
	This is a bug introduced by commit 9ff2e0f, when starting a new
	paxos round, we should check the proposer state first, then set
	it to PREPARING.

2012-01-06  Jiaju Zhang  <jjzhang@suse.de>

	Avoid NULL pointer dereference in paxos lease

2012-01-05  Joerg Frede  <frede@b1-systems.de>

	Fix PIDFile name in lsp startscript
	The lsb startscript was not been able to stop the boothd
	because the PID file name is not boothd.pid it is booth.pid.

2012-01-05  Daniel Gollub  <gollub@b1-systems.de>

	Fix pacemaker ticket handling
	Use crm_ticket with -v not -n as suggested by Gaoyan.
	Reported by  Joerg Frede.

	Return EXIT_FAILURE if initailation fails

2012-01-04  Jiaju Zhang  <jjzhang@suse.de>

	Modify the timer expiration when accepting a new lease

	Reset proposer state when starting a new paxos round

	Rework some functions in timer.c

2012-01-03  Joerg Frede  <frede@b1-systems.de>

	Change daemon name and default values in OCF Script
	Changed the daemon name from booth to boothd.
	Default value for daemon was not set is now
	"boothd" if OCF_RESKEY_daemon is empty.
	Default value for type was always set to "site" even
	when OCF_RESKEY_type was set to something other.
	This now will be checkt and set correctly.
	Removed overwriting of OCF_RESOURCE_INSTANCE_gloablly_unique with
	false. Because this is already captured in booth_validate function.
	If its overwritten no error message will be displayed.

	Fixes issues like this:
	OCF_ROOT=/usr/lib/ocf OCF_RESKEY_daemon=booth \
	/usr/lib/ocf/resource.d/pacemaker/booth-site validate-all
	ERROR: Setup problem: couldn't find command:

	Fix daemon Name in LSB startscript
	While the daemon Name is now boothd not booth i fixed
	it in the LSB Startscript.

2012-01-02  Joerg Frede  <frede@b1-systems.de>

	Fix not existing function name in booth-site OCF Script
	There was a function call named controld_monitor which
	was not found in booth-site OCF Script. Perhaps a copy
	and paste mistake from the controld Script. Replaced it
	with the right function booth_monitor.

	Fixes issues like this:

	OCF_ROOT=/usr/lib/ocf OCF_RESKEY_daemon=booth \
	 /usr/lib/ocf/resource.d/pacemaker/booth-site start
	booth: no process found
	/usr/lib/ocf/resource.d/pacemaker/booth-site: line 107:
	controld_monitor: command not found

2011-12-30  Daniel Gollub  <gollub@b1-systems.de>

	Drop buildenv auto-generated file
	src/Makefile is auto-generated by automake
	and autotools. Should not get versioned by git.

	Add semi-colon character to configparser whitelist
	semi-colons are used in "ticket" key-values pairs to
	apply the the ticket-expiry timeout in seconds.

	Fixes issues for configuratoin like this:

	ticket="ticketA;1000"

	$ /usr/sbin/booth arbitrator -D
	1325254499  invalid character (';', lineno 6) in config file

2011-12-12  Jiaju Zhang  <jjzhang@suse.de>

	Rework paxos_propose function.

2011-12-05  Steven Dake  <sdake@redhat.com>

	Add booth_config.h.in so make dist works properly (missed commit)

	Initial autotools support
	make dist works and builds a buildable tarball, however, the files may
	not be installed in the proper location.

	Add COPYING file

2011-11-29  Jiaju Zhang  <jjzhang@suse.de>

	Initialize the proposed value before customized proposing.

2011-11-13  Jiaju Zhang  <jjzhang@suse.de>

	Fix uninitialized paxos lease handler.

	Fix typo.

2011-11-12  Jiaju Zhang  <jjzhang@suse.de>

	Not to send duplicate propose message when already having quorum.

	Initialize ticket owner and default expiry.

2011-11-10  Jiaju Zhang  <jjzhang@suse.de>

	Fix the sending data length in acceptor promise stage.

	Add the missing "ntohl" conversion to the "to" variable.

	Fix the uninitialized "ps" pointer which results in a core dump.

	Fix the improper package length conversion.

	Set the default "force" option to zero.

2011-11-03  Jiaju Zhang  <jjzhang@suse.de>

	Adding missing copyright lines for log.[ch]

2011-10-18  Jiaju Zhang  <jjzhang@suse.de>

	Adding an example of the booth configuration file.

2011-08-24  Jiaju Zhang  <jjzhang@suse.de>

	Initial check-in of the Booth Cluster Ticket Manager.
	Booth manages the ticket which authorizes one of the cluster sites located in
	geographically dispersed distances to run certain resources. It is designed to
	be an add-on of Pacemaker, which extends Pacemaker to support geographically
	distributed clustering.

	Booth includes an implementation of Paxos and Paxos Lease algorithm, which
	guarantees the distributed consensus among different cluster sites. One
	development goal of the Paxos implementation is to be flexible enough so that
	it can also be used by some other projects which need Paxos.
