Refactor: libcrmcommon: New pcmk__xpath_find_one()
API: libcrmcommon: Deprecate pcmkXmlStr
Refactor: libcrmcommon: Drop pcmkXmlStr internally
Refactor: libcrmcommon: Take doc as argument in pcmk__set_xml_doc_flag()
Refactor: libcrmcommon: Drop xml_tracking_changes() internally
API: libcrmcommon: Deprecate xml_tracking_changes()
Refactor: libcrmcommon: New pcmk__xml_doc_all_flags_set()
API: libcrmcommon: Deprecate xml_document_dirty()
Refactor: libcrmcommon: Drop xml_document_dirty() internally
Refactor: libcrmcommon: Drop pcmk__tracking_xml_changes()
Doc: libcrmservice: Classify two Coverity defects as false positives
Refactor: libcrmcommon: Rename xml_doc_private_t:user to acl_user
Refactor: libcrmcommon: pcmk__xe_remove_matching_attrs() new force arg
Merge pull request #3851 from nrwahl2/nrwahl2-refactors
Refactor: various: Drop includes of stddef.h
Refactor: libcrmcommon: New pcmk__xpath_num_results()
Refactor: libcrmcommon: New pcmk__xpath_search()
Refactor: libcrmcommon: Move internal XPath functions to own header
API: libcrmcommon: Deprecate xpath_search()
Refactor: libstonithd: Query stonith devices more clearly
API: libcrmcommon: Deprecate numXpathResults()
API: libcrmcommon: Deprecate getXpathResult()
Refactor: libcrmcommon: Make xml_element_type_text() library-private
Fix: libcib: Don't match element based on XPath matching an attribute
Refactor: libcrmcommon: New pcmk__xpath_result()
Refactor: various: Drop internal calls to freeXpathObject()
Refactor: libcrmcommon: Remove level of nesting in pcmk__check_acl()
API: libcrmcommon: Deprecate freeXpathObject()
Refactor: libcrmcommon: Limit parent scope in pcmk__check_acl()
Refactor: libcrmcommon: Reduce duplication in pcmk__check_acl()
Refactor: libcrmcommon: Improve argument name in pcmk__check_acl()
Refactor: libcrmcommon: Limit scope of xpath in pcmk__check_acl()
Refactor: libcib: Skip dedupXpathResults() when there are no results
Refactor: libcib: Some best practices in cib_process_xpath()
Refactor: libcib: Drop dedupXpathResults() internally
API: libcrmcommon: Deprecate dedupXpathResults()
Refactor: libcrmcommon: Ensure pcmk__xpath_num_results returns >= 0
Refactor: various: NULL-check pcmk__xpath_result() return value
Merge pull request #3843 from nrwahl2/nrwahl2-refactors
compress: use lzo1x_decompress_safe
Merge pull request #437 from kronosnet/lzo2_safe
compress: use lzo1x_decompress_safe
tx: Remove log message about adding header
tx: Initialize datafd_hdr
transport: Fix writev_all
Merge pull request #436 from jfriesse/fix_writev_all
compress: use lzo1x_decompress_safe
Seems to be closed by b93f0245 and a1d94f7a, both from Aleksei Burlakov.
Fix: libcrmcommon: provide a description for pcmk_rc_no_dc return code
Merge pull request #3848 from gao-yan/pcmk_rc_no_dc-desc
@waltdisgrace Adding a mainloop timer here is definitely the way to go. If you haven't looked at the mainloop stuff before (especially glib's implementation and what we've built on top of it), this could be a little bit confusing. The basic idea is that we fake being multithreaded by looping over a queue of events that can come from various sources like file or network IO, UNIX signals, periodic or one-off timers, and so forth. Using the main loop allows us to avoid blocking other work from happening.
@waltdisgrace Start by adding a unit test to verify that the pacemaker library still just segfaults on that input. I think would be as good a place as any for this, but @nrwahl2 might have a better suggestion. I can then help you make sense of the segfault and we can figure out where to throw an error.
Additionally, it would be nice to have a unit test or two for this function. Most of what it does is call another function, several of which are already unit tested, but checking that the inputs/outputs are as expected would be good.
Refactor: tools: Drop unused scheduler arg from cli_resource_search()
Refactor: tools: Improve crm_resource.c:validate_cmdline_config()
Refactor: tools: Drop redundant scheduler arg from cli_resource_execute
Refactor: tools: Drop options.cmdline_config in crm_resource.c
Refactor: tools: Drop redundant scheduler arg from cli_resource_delete()
Refactor: tools: Drop redundant scheduler arg from cli_resource_print()
Refactor: tools: Drop redundant scheduler arg from cli_resource_move()
Refactor: tools: Take pcmk_resource_t in send_lrm_rsc_op()
Refactor: tools: Take pcmk_resource_t in cli_resource_fail()
Refactor: tools: Drop redundant scheduler arg from cli_resource_fail()
Refactor: tools: Drop redundant scheduler arg from clear_rsc_history()
Refactor: tools: Take pcmk_resource_t in clear_rsc_history()
Refactor: tools: Assert rsc != NULL in cli_resource_delete()
Refactor: tools: Drop redundant scheduler arg from send_lrm_rsc_op()
Refactor: tools: Drop crm_resource.c:compare_id()
Refactor: tools: Drop unneeded args to generate_resource_params()
Refactor: tools: Drop redundant scheduler arg from clear_rsc_failures()
Refactor: tools: Remove some nesting in cli_resource_search()
Refactor: tools: GList function for building crm_resource node info list
Doc: various: Drop doxygen structural commands
Low: tools: Dry-run crm_resource --fail if CIB_file is set
Refactor: tools: Defunctionize build_node_info_list()
Refactor: tools: Add a function table to crm_resource.c
Refactor: tools: New crm_rsc_cmd_info_t struct
Refactor: tools: New crm_rsc_find_match_basename flag
Refactor: tools: New crm_rsc_find_match_anon_basename flag
Refactor: tools: New crm_rsc_rejects_clone_instance flag
Refactor: tools: New crm_rsc_find_match_history flag
Refactor: tools: New crm_rsc_requires_cib flag
Refactor: tools: New crm_rsc_requires_scheduler flag
Refactor: tools: New crm_rsc_requires_node flag
Refactor: tools: New crm_rsc_requires_resource flag
Refactor: tools: New crm_rsc_requires_controller flag
Doc: tools: Add FIXME for crm_resource --force-* commands
Refactor: tools: Move crm_resource controller connection block
Refactor: tools: Drop is_cib_required() and is_scheduler_required()
Refactor: tools: Return crm_exit_t from crm_resource handler functions
Refactor: tools: Reorganize some crm_resource lookups and validation
Doc: tools: Drop Coverity suppressions from crm_resource.c