Checkout Tools
  • last updated 2 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
Work around a bug in Serf bucket handling, which could crash in some cases

within svn_ra_serf__get_dir(dirent_fields=0). Found by 'svnmover' tests.

The bug is fixed in Serf trunk r1712790, but not yet released.

Suggested by: rhuijben

* subversion/libsvn_ra_serf/property.c

(create_propfind_body): Avoid the possibility of the first operation on the

bucket being serf_bucket_aggregate_prepend(), by only using _append().

With the standardized handler setup functions we can be a bit smarter on

when to setup which headers. We are no longer in the business of writing

a generic Delta/V client, so avoid doing additional work for nobody.

* subversion/libsvn_ra_serf/commit.c

(add_file): Disable DAV headers on this HEAD request.

* subversion/libsvn_ra_serf/get_lock.c

(svn_ra_serf__get_lock): Disable DAV headers on this PROPFIND request.

* subversion/libsvn_ra_serf/property.c

(svn_ra_serf__create_propfind_handler): Disable DAV headers on these

PROPFIND requests.

* subversion/libsvn_ra_serf/util.c

(setup_serf_req): Tweak comment.

  1. … 3 more files in changeset.
The ra_serf's standard propfind handler verifies that the response has http

status 207, so it is not necessary to check for that again after processing

the response (unlike 1.8, where this was necessary).

* subversion/libsvn_ra_serf/get_file.c

(svn_ra_serf__get_file): Remove unneeded check.

* subversion/libsvn_ra_serf/property.c

(svn_ra_serf__fetch_node_props): Remove unneeded check.

* subversion/libsvn_ra_serf/serf.c

(serf__rev_proplist): Remove unneeded check.

* subversion/libsvn_ra_serf/stat.c

(svn_ra_serf__stat,

svn_ra_serf__get_dir): Remove unneeded checks.

  1. … 3 more files in changeset.
* subversion/libsvn_ra_serf/property.c

(deliver_node_props): Add comment that got lost in r1654696.

Make a function static and rename some pool arguments to document their

behaviour.

* subversion/libsvn_ra_serf/blncache.c

(svn_ra_serf__blncache_set): Rename argument to scratch_pool.

(svn_ra_serf__blncache_get_bc_url): Rename argument to result_pool.

* subversion/libsvn_ra_serf/blncache.h

(svn_ra_serf__blncache_set): Rename argument to scratch_pool.

(svn_ra_serf__blncache_get_bc_url): Rename argument to result_pool.

* subversion/libsvn_ra_serf/commit.c

(open_root): Use scratch_pool for request.

* subversion/libsvn_ra_serf/property.c

(svn_ra_serf__deliver_node_props): Rename to...

(deliver_node_props):... this.

(svn_ra_serf__fetch_node_props): Update caller.

(get_baseline_info): Split pool argument.

* subversion/libsvn_ra_serf/ra_serf.h

(svn_ra_serf__deliver_node_props): Remove function.

  1. … 4 more files in changeset.
Refactor the stat function in ra_serf to avoid more unneeded intermediate

state in hashtables. We can just process the information directly now.

* subversion/libsvn_ra_serf/property.c

(svn_ra_serf__walk_node_props): Remove function.

* subversion/libsvn_ra_serf/ra_serf.h

(svn_ra_serf__walker_visitor_t): Remove typedef.

(svn_ra_serf__walk_node_props): Remove function.

* subversion/libsvn_ra_serf/stat.c

(fetch_path_props): Remove function. Fold into callers.

(get_resource_type): Remove function. Fold into caller.

(svn_ra_serf__check_path): Integrate fetch_path_props and

get_resource_type.

(dirent_walker_baton_t): Rename to...

(fill_dirent_baton_t): ... this.

(dirent_walker): Rename to...

(fill_dirent_propfunc): ... this. Implement svn_ra_serf__prop_func_t and

re-organize if to make most likely results take less checks.

(svn_ra_serf__stat): Create a propfind handler directly, instead of

fetching a hash with data and then walking it with the same callback

that could just handle the data directly.

(get_dir_dirents_cb): Update caller.

  1. … 2 more files in changeset.
In ra_serf, refactor the get_file() implementation to collect its special

properties directly instead of via an intermediate 'generic hash'.

* subversion/libsvn_ra_serf/get_file.c

(try_get_wc_contents): Use direct argument for checksum.

(file_prop_baton_t): New struct.

(get_file_prop_cb): New function.

(svn_ra_serf__get_file): Avoid the far too generic node prop functions.

* subversion/libsvn_ra_serf/property.c

(propfind_context_t,

svn_ra_serf__create_propfind_handler): Update type usage.

(set_flat_props,

svn_ra_serf__flatten_props): Remove functions.

(svn_ra_serf__get_resource_type): Move this function to stat.c

* subversion/libsvn_ra_serf/ra_serf.h

(svn_ra_serf__prop_func): Rename to...

(svn_ra_serf__prop_func_t): ... this.

(svn_ra_serf__deliver_svn_props,

svn_ra_serf__deliver_node_props): Update comments.

(svn_ra_serf__create_propfind_handler): Update type usage.

(svn_ra_serf__flatten_props,

svn_ra_serf__get_resource_type): Remove functions.

(svn_ra_serf__report_resource): Update comment.

* subversion/libsvn_ra_serf/stat.c

(get_resource_type): New function.

(svn_ra_serf__check_path): Update caller.

  1. … 3 more files in changeset.
Make the session an argument of svn_ra_serf__create_expat_handler.

* subversion/libsvn_ra_serf/blame.c

(svn_ra_serf__get_file_revs): Update caller.

* subversion/libsvn_ra_serf/getdate.c

(svn_ra_serf__get_dated_revision): Update caller.

* subversion/libsvn_ra_serf/getlocations.c

(svn_ra_serf__get_locations): Update caller.

* subversion/libsvn_ra_serf/getlocationsegments.c

(svn_ra_serf__get_location_segments): Update caller.

* subversion/libsvn_ra_serf/getlocks.c

(svn_ra_serf__get_locks): Update caller.

* subversion/libsvn_ra_serf/get_deleted_rev.c

(svn_ra_serf__get_deleted_rev): Update caller.

* subversion/libsvn_ra_serf/get_lock.c

(svn_ra_serf__get_lock): Update caller.

* subversion/libsvn_ra_serf/inherited_props.c

(svn_ra_serf__get_inherited_props): Update caller.

* subversion/libsvn_ra_serf/lock.c

(svn_ra_serf__lock): Update caller.

* subversion/libsvn_ra_serf/log.c

(svn_ra_serf__get_log): Update caller.

* subversion/libsvn_ra_serf/merge.c

(svn_ra_serf__run_merge): Remove argument. Update caller.

* subversion/libsvn_ra_serf/mergeinfo.c

(svn_ra_serf__get_mergeinfo): Update caller.

* subversion/libsvn_ra_serf/multistatus.c

(svn_ra_serf__setup_error_parsing): Update caller.

* subversion/libsvn_ra_serf/options.c

(create_options_req): Update caller.

* subversion/libsvn_ra_serf/property.c

(svn_ra_serf__create_propfind_handler): Update caller.

* subversion/libsvn_ra_serf/ra_serf.h

(svn_ra_serf__create_expat_handler): Add argument.

(svn_ra_serf__run_merge): Remove argument.

* subversion/libsvn_ra_serf/replay.c

(svn_ra_serf__replay,

svn_ra_serf__replay_range): Update caller.

* subversion/libsvn_ra_serf/update.c

(finish_report): Update caller.

* subversion/libsvn_ra_serf/xml.c

(svn_ra_serf__create_expat_handler): Set session and conn from new argument.

  1. … 19 more files in changeset.
In ra_serf: Stop passing around explicit session, session->conn[0] pairs in the

propfind/options handling where using anything other than the primary connection

doesn't really make sense.

This simplifies a lot of code, and allows further refactoring later on.

* subversion/libsvn_ra_serf/blame.c

(svn_ra_serf__get_file_revs): Update caller.

* subversion/libsvn_ra_serf/commit.c

(get_version_url): Update caller.

(open_root): Update caller. Move a bit of code to the property handling.

(add_directory,

add_file,

svn_ra_serf__get_commit_editor): Update caller.

* subversion/libsvn_ra_serf/getdate.c

(svn_ra_serf__get_dated_revision): Update caller.

* subversion/libsvn_ra_serf/getlocations.c

(svn_ra_serf__get_locations): Update caller.

* subversion/libsvn_ra_serf/getlocationsegments.c

(svn_ra_serf__get_location_segments): Update caller.

* subversion/libsvn_ra_serf/getlocks.c

(svn_ra_serf__get_locks): Update caller.

* subversion/libsvn_ra_serf/get_deleted_rev.c

(svn_ra_serf__get_deleted_rev): Update caller.

* subversion/libsvn_ra_serf/get_file.c

(svn_ra_serf__get_file): Update caller.

* subversion/libsvn_ra_serf/inherited_props.c

(get_iprops_via_more_requests,

svn_ra_serf__get_inherited_props): Update caller.

* subversion/libsvn_ra_serf/log.c

(svn_ra_serf__get_log): Update caller.

* subversion/libsvn_ra_serf/mergeinfo.c

(svn_ra_serf__get_mergeinfo): Update caller.

* subversion/libsvn_ra_serf/options.c

(create_options_req): Update caller.

* subversion/libsvn_ra_serf/property.c

(svn_ra_serf__deliver_props2): Rename to...

(svn_ra_serf__create_propfind_handler): ... this and remove conn argument.

Update caller.

(svn_ra_serf__wait_for_props): Remove function. Fold into two callers.

(svn_ra_serf__fetch_node_props): Update caller.

(retrieve_baseline_info,

v1_get_youngest_revnum,

svn_ra_serf__get_youngest_revnum,

get_baseline_info,

svn_ra_serf__get_stable_url): Use session instead of connection.

(svn_ra_serf__fetch_dav_prop): Update caller.

* subversion/libsvn_ra_serf/ra_serf.h

(svn_ra_serf__deliver_props2): Rename to...

(svn_ra_serf__create_propfind_handler): ... this. Update arguments and docs.

(svn_ra_serf__fetch_node_props,

svn_ra_serf__fetch_dav_prop,

svn_ra_serf__v2_get_youngest_revnum,

svn_ra_serf__v1_get_activity_collection,

svn_ra_serf__discover_vcc,

svn_ra_serf__report_resource,

svn_ra_serf__get_relative_path,

svn_ra_serf__get_stable_url): Use just a session as argument.

* subversion/libsvn_ra_serf/replay.c

(svn_ra_serf__replay,

svn_ra_serf__replay_range): Update caller.

* subversion/libsvn_ra_serf/serf.c

(svn_ra_serf__reparent,

serf__rev_proplist,

svn_ra_serf__get_repos_root): Update caller.

* subversion/libsvn_ra_serf/stat.c

(fetch_path_props,

svn_ra_serf__get_dir): Update caller.

* subversion/libsvn_ra_serf/update.c

(fetch_for_file): Update caller.

* subversion/libsvn_ra_serf/util.c

(svn_ra_serf__discover_vcc,

svn_ra_serf__get_relative_path,

svn_ra_serf__report_resource): Update argument handling.

  1. … 18 more files in changeset.
Resolve an old ra_serf TODO: Add scratch_pool arguments to

svn_ra_serf__request_body_delegate_t and

svn_ra_serf__request_header_delegate_t.

No functional changes.

* subversion/libsvn_ra_serf/blame.c

(create_file_revs_body): Add argument.

* subversion/libsvn_ra_serf/commit.c

(create_checkout_body,

setup_proppatch_headers): Add argument.

(create_proppatch_body): Add argument. Set scratch pool to pool :(

(create_put_body,

create_empty_put_body,

setup_put_headers,

setup_copy_file_headers,

setup_add_dir_common_headers,

setup_copy_dir_headers,

setup_delete_headers,

create_txn_post_body,

setup_post_headers): Add argument.

* subversion/libsvn_ra_serf/getdate.c

(create_getdate_body): Add argument.

* subversion/libsvn_ra_serf/getlocations.c

(create_get_locations_body): Add argument.

* subversion/libsvn_ra_serf/getlocationsegments.c

(create_gls_body): Add argument.

* subversion/libsvn_ra_serf/getlocks.c

(create_getlocks_body): Add argument.

* subversion/libsvn_ra_serf/get_deleted_rev.c

(create_getdrev_body): Add argument.

* subversion/libsvn_ra_serf/get_file.c

(headers_fetch): Add argument.

* subversion/libsvn_ra_serf/get_lock.c

(create_getlock_body,

setup_getlock_headers): Add argument.

* subversion/libsvn_ra_serf/inherited_props.c

(create_iprops_body): Add argument.

* subversion/libsvn_ra_serf/lock.c

(set_lock_headers,

create_lock_body,

set_unlock_headers): Add argument.

* subversion/libsvn_ra_serf/log.c

(create_log_body): Add argument.

* subversion/libsvn_ra_serf/merge.c

(setup_merge_headers,

create_merge_body): Add argument.

* subversion/libsvn_ra_serf/mergeinfo.c

(create_mergeinfo_body): Add argument.

* subversion/libsvn_ra_serf/options.c

(create_options_body,

create_simple_options_body): Add argument.

* subversion/libsvn_ra_serf/property.c

(setup_propfind_headers,

create_propfind_body): Add argument.

* subversion/libsvn_ra_serf/ra_serf.h

(svn_ra_serf__request_body_delegate_t,

svn_ra_serf__request_header_delegate_t): Add argument. Remove old TODO.

* subversion/libsvn_ra_serf/replay.c

(create_replay_body): Add argument.

* subversion/libsvn_ra_serf/update.c

(headers_fetch,

create_update_report_body,

setup_update_report_headers): Add argument.

* subversion/libsvn_ra_serf/util.c

(setup_request): Update caller.

  1. … 19 more files in changeset.
In ra_serf: Get rid of the final rev->path->ns->prop->value hash, by

updating the xml PROPFIND result parser to directly use a ns->prop->value

hash.

* subversion/libsvn_ra_serf/property.c

(set_ns_prop): New helper function.

(propfind_closed): Use set_ns_prop. Inline the code that sends the

results.

(svn_ra_serf__get_ver_prop,

svn_ra_serf__get_prop_string,

svn_ra_serf__get_prop,

svn_ra_serf__set_ver_prop): Remove functions.

(walk_all_props,

svn_ra_serf__walk_all_paths): Remove functions.

(select_revprops,

svn_ra_serf__select_revprops): Remove functions.

* subversion/libsvn_ra_serf/ra_serf.h

(svn_ra_serf__set_ver_prop): Remove function.

(svn_ra_serf__set_rev_prop): Remove macro.

(svn_ra_serf__path_rev_walker_t): Remove typedef.

(svn_ra_serf__walk_all_paths,

svn_ra_serf__select_revprops,

svn_ra_serf__get_ver_prop_string,

svn_ra_serf__get_ver_prop,

svn_ra_serf__get_prop_string,

svn_ra_serf__get_prop): Remove function.

  1. … 1 more file in changeset.
In ra serf: Use the streamy results of the propfind result parser where

possible, instead of using walkers over the three way nested hash. Introduce

two standard collectors.

* subversion/libsvn_ra_serf/inherited_props.c

(keep_only_regular_props): Move to property.c.

(get_iprops_via_more_requests): Use direct hash delivery, to avoid hacky

lookup. Provide server error when available.

(svn_ra_serf__get_inherited_props): Remove obsolete comment.

* subversion/libsvn_ra_serf/property.c

(deliver_prop_baton_t): Remove baton.

(deliver_prop,

deliver_prop): Remove functions.

(svn_ra_serf__deliver_svn_props,

svn_ra_serf__deliver_node_props): New functions.

(svn_ra_serf__retrieve_props): Remove function.

(svn_ra_serf__fetch_node_props): Fetch node props without intermediate step.

(svn_ra_serf__keep_only_regular_props):

New function (copied from inherited_props.c).

* subversion/libsvn_ra_serf/ra_serf.h

(svn_ra_serf__keep_only_regular_props): New function.

(svn_ra_serf__deliver_props): Remove function.

(svn_ra_serf__deliver_svn_props,

svn_ra_serf__deliver_node_props): New function.

* subversion/libsvn_ra_serf/replay.c

(revision_report_t): Use single hash revs_props for revision props.

(replay_opened): Filter revision props.

(replay_closed): Update caller.

(svn_ra_serf__replay): Update init.

(svn_ra_serf__replay_range): Properly name per revision context to document

lifetime. Update init.

* subversion/libsvn_ra_serf/serf.c

(serf__rev_proplist): Resolve old todo.

  1. … 4 more files in changeset.
Simplify the ra_serf proppatch code quite a bit by avoiding the three levels

deep nested generic hash for temporarily recording property changes during

commit processing.

This accidentally hides an issue that Julian is working on (which currently

makes the bots red), but it does this by making serf more like the other ra

layers; not by resolving the actual problem in svnrdump.

* subversion/libsvn_ra_serf/commit.c

(proppatch_context_t): Use two hashes instead of 4 3-levels-nested hashes.

(dir_context_t

file_context_t): Use simplified hash for recording propchanges.

(walker_baton_t): Remove struct.

(derive_old_val): Remove function.

(proppatch_walker): Rename to...

(write_prop_xml): ... this. Calculate wire property name here.

(create_proppatch_body): Call write_prop_xml() for all properties

instead of using the old walker.

(open_root): Update baton initialization. Simplify initial proppatch.

(add_directory,

open_directory): Update baton init.

(change_dir_prop): Simplify.

(close_directory): Update caller. No need to pass lock tokens.

(add_file,

open_file): Update baton init.

(change_file_prop): Simplify.

(close_file): Update caller.

(svn_ra_serf__change_rev_prop): Use simplified logic.

* subversion/libsvn_ra_serf/property.c

(svn_ra_serf__set_prop): Remove function.

(svn_ra_serf__walk_all_props): Rename to...

(walk_all_props): ... this and make static.

(svn_ra_serf__select_revprops): Update caller.

* subversion/libsvn_ra_serf/ra_serf.h

(svn_ra_serf__walk_all_props): Remove function.

(svn_ra_serf__set_prop): Remove function.

* subversion/tests/cmdline/svnrdump_tests.py

(load_non_deltas_copy_with_props,

load_non_deltas_replace_copy_with_props,

load_non_deltas_with_props): Remove dav specific XFail.

  1. … 3 more files in changeset.
Revert r1508225, which moved the include of svn_private_config.h before all

includes of our public headers. Public headers shouldn't depend on private

headers and all changes that required this are long reverted on trunk.

This patch excludes all conflicting cases.

* subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c

* subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c

* subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c

* subversion/libsvn_auth_gnome_keyring/gnome_keyring.c

* subversion/libsvn_client/add.c

* subversion/libsvn_client/cat.c

* subversion/libsvn_client/changelist.c

* subversion/libsvn_client/cleanup.c

* subversion/libsvn_client/commit.c

* subversion/libsvn_client/commit_util.c

* subversion/libsvn_client/copy.c

* subversion/libsvn_client/copy_foreign.c

* subversion/libsvn_client/ctx.c

* subversion/libsvn_client/delete.c

* subversion/libsvn_client/deprecated.c

* subversion/libsvn_client/diff.c

* subversion/libsvn_client/diff_local.c

* subversion/libsvn_client/diff_summarize.c

* subversion/libsvn_client/export.c

* subversion/libsvn_client/externals.c

* subversion/libsvn_client/import.c

* subversion/libsvn_client/info.c

* subversion/libsvn_client/iprops.c

* subversion/libsvn_client/list.c

* subversion/libsvn_client/locking_commands.c

* subversion/libsvn_client/log.c

* subversion/libsvn_client/merge.c

* subversion/libsvn_client/mergeinfo.c

* subversion/libsvn_client/patch.c

* subversion/libsvn_client/prop_commands.c

* subversion/libsvn_client/ra.c

* subversion/libsvn_client/repos_diff.c

* subversion/libsvn_client/resolved.c

* subversion/libsvn_client/revert.c

* subversion/libsvn_client/switch.c

* subversion/libsvn_client/update.c

* subversion/libsvn_client/util.c

* subversion/libsvn_delta/compat.c

* subversion/libsvn_delta/xdelta.c

* subversion/libsvn_diff/parse-diff.c

* subversion/libsvn_diff/util.c

* subversion/libsvn_fs/access.c

* subversion/libsvn_fs_base/bdb/changes-table.c

* subversion/libsvn_fs_base/bdb/env.c

* subversion/libsvn_fs_base/dag.c

* subversion/libsvn_fs_base/fs.c

* subversion/libsvn_fs_base/lock.c

* subversion/libsvn_fs_base/revs-txns.c

* subversion/libsvn_fs_base/tree.c

* subversion/libsvn_fs_fs/caching.c

* subversion/libsvn_fs_fs/lock.c

* subversion/libsvn_fs_fs/temp_serializer.c

* subversion/libsvn_fs_fs/tree.c

* subversion/libsvn_ra/compat.c

* subversion/libsvn_ra/deprecated.c

* subversion/libsvn_ra/ra_loader.c

* subversion/libsvn_ra_local/ra_plugin.c

* subversion/libsvn_ra_serf/blame.c

* subversion/libsvn_ra_serf/blncache.c

* subversion/libsvn_ra_serf/commit.c

* subversion/libsvn_ra_serf/getlocations.c

* subversion/libsvn_ra_serf/getlocationsegments.c

* subversion/libsvn_ra_serf/getlocks.c

* subversion/libsvn_ra_serf/inherited_props.c

* subversion/libsvn_ra_serf/log.c

* subversion/libsvn_ra_serf/merge.c

* subversion/libsvn_ra_serf/mergeinfo.c

* subversion/libsvn_ra_serf/options.c

* subversion/libsvn_ra_serf/property.c

* subversion/libsvn_ra_serf/replay.c

* subversion/libsvn_ra_serf/serf.c

* subversion/libsvn_ra_serf/update.c

* subversion/libsvn_ra_serf/util.c

* subversion/libsvn_ra_serf/xml.c

* subversion/libsvn_ra_svn/client.c

* subversion/libsvn_ra_svn/editorp.c

* subversion/libsvn_ra_svn/marshal.c

* subversion/libsvn_repos/authz.c

* subversion/libsvn_repos/commit.c

* subversion/libsvn_repos/delta.c

* subversion/libsvn_repos/deprecated.c

* subversion/libsvn_repos/fs-wrap.c

* subversion/libsvn_repos/hooks.c

* subversion/libsvn_repos/log.c

* subversion/libsvn_repos/replay.c

* subversion/libsvn_repos/reporter.c

* subversion/libsvn_repos/repos.c

* subversion/libsvn_repos/rev_hunt.c

* subversion/libsvn_subr/auth.c

* subversion/libsvn_subr/cmdline.c

* subversion/libsvn_subr/compat.c

* subversion/libsvn_subr/config.c

* subversion/libsvn_subr/config_auth.c

* subversion/libsvn_subr/deprecated.c

* subversion/libsvn_subr/dso.c

* subversion/libsvn_subr/hash.c

* subversion/libsvn_subr/io.c

* subversion/libsvn_subr/mergeinfo.c

* subversion/libsvn_subr/opt.c

* subversion/libsvn_subr/properties.c

* subversion/libsvn_subr/simple_providers.c

* subversion/libsvn_subr/sorts.c

* subversion/libsvn_subr/ssl_client_cert_providers.c

* subversion/libsvn_subr/ssl_client_cert_pw_providers.c

* subversion/libsvn_subr/ssl_server_trust_providers.c

* subversion/libsvn_subr/subst.c

* subversion/libsvn_subr/types.c

* subversion/libsvn_subr/username_providers.c

* subversion/libsvn_subr/utf.c

* subversion/libsvn_subr/win32_crypto.c

* subversion/libsvn_wc/adm_crawler.c

* subversion/libsvn_wc/adm_files.c

* subversion/libsvn_wc/conflicts.c

* subversion/libsvn_wc/copy.c

* subversion/libsvn_wc/deprecated.c

* subversion/libsvn_wc/diff_editor.c

* subversion/libsvn_wc/diff_local.c

* subversion/libsvn_wc/entries.c

* subversion/libsvn_wc/externals.c

* subversion/libsvn_wc/info.c

* subversion/libsvn_wc/lock.c

* subversion/libsvn_wc/node.c

* subversion/libsvn_wc/old-and-busted.c

* subversion/libsvn_wc/props.c

* subversion/libsvn_wc/revert.c

* subversion/libsvn_wc/status.c

* subversion/libsvn_wc/update_editor.c

* subversion/libsvn_wc/upgrade.c

* subversion/libsvn_wc/wc_db_update_move.c

* subversion/libsvn_wc/wc_db_wcroot.c

* subversion/mod_dav_svn/repos.c

* subversion/mod_dav_svn/version.c

* subversion/svn/cl-conflicts.c

* subversion/svn/commit-cmd.c

* subversion/svn/conflict-callbacks.c

* subversion/svn/diff-cmd.c

* subversion/svn/help-cmd.c

* subversion/svn/notify.c

* subversion/svn/propedit-cmd.c

* subversion/svn/propget-cmd.c

* subversion/svn/props.c

* subversion/svn/status-cmd.c

* subversion/svn/status.c

* subversion/svn/svn.c

* subversion/svn/util.c

* subversion/svnadmin/svnadmin.c

* subversion/svnlook/svnlook.c

* subversion/svnrdump/dump_editor.c

* subversion/svnrdump/svnrdump.c

* subversion/svnrdump/util.c

* subversion/svnserve/serve.c

* subversion/svnsync/svnsync.c

* subversion/svnsync/sync.c

* subversion/tests/libsvn_fs/fs-test.c

* subversion/tests/libsvn_repos/repos-test.c

* subversion/tests/libsvn_subr/hashdump-test.c

* subversion/tests/libsvn_subr/mergeinfo-test.c

* subversion/tests/libsvn_subr/subst_translate-test.c

* subversion/tests/libsvn_wc/conflict-data-test.c

* subversion/tests/libsvn_wc/op-depth-test.c

* subversion/tests/libsvn_wc/wc-test.c

* subversion/tests/svn_test_fs.c

* tools/server-side/fsfs-stats.c

Move the svn_string_private.h include back to the original location.

  1. … 162 more files in changeset.
Make the pool usage in the property handling more sensible. In the set

property function duplicate all arguments in the result pool instead of

just 50% of them. Update expectations in callers to avoid unneeded work.

* subversion/libsvn_ra_serf/commit.c

(change_dir_prop,

change_file_prop): Assume that svn_ra_serf__set_prop takes care of

duplication.

* subversion/libsvn_ra_serf/property.c

(propfind_context_t): Remove some unneeded variables.

(copy_into_ret_props): Remove unneeded intermediate function.

(propfind_opened): Allocate in state pool instead of global context

pool.

(propfind_closed): Stop duplicating values. Directly pass callback to

svn_ra_serf__walk_all_paths.

(svn_ra_serf__set_ver_prop): Properly duplicate name and value if needed.

(svn_ra_serf__deliver_props2): Update baton initialization.

(deliver_prop): Stop duplicating everything.

(svn_ra_serf__walk_all_paths): Stop passing unused arguments.

* subversion/libsvn_ra_serf/ra_serf.h

(svn_ra_serf__path_rev_walker_t): Remove 3 unused length arguments.

  1. … 2 more files in changeset.
Update the ra_serf internal propfind api to allow delivering properties to a

callback function instead of via a triple nested hashtable. Use this api to

avoid caching properties in the update editor.

* subversion/libsvn_ra_serf/property.c

(propfind_context_t): Store callback instead of hashtable.

(copy_into_ret_props): Call callback instead of storing in hashtable.

(propfind_closed): Avoid unneeded work.

(svn_ra_serf__deliver_props): Rename to ...

(svn_ra_serf__deliver_props2): ... this. Store callback, etc.

(deliver_prop_baton_t): New struct.

(deliver_prop): New function.

(svn_ra_serf__deliver_props): New function around

svn_ra_serf__deliver_props2.

* subversion/libsvn_ra_serf/ra_serf.h

(svn_ra_serf__prop_func): New typedef.

(svn_ra_serf__deliver_props2): New function.

* subversion/libsvn_ra_serf/update.c

(dir_baton_t): Remove hash.

(file_baton_t): Remove hash. Add boolean.

(set_file_props,

set_dir_props): Remove old implementations here.

(maybe_close_dir): Remove retrieved hash walking.

(check_lock): Remove function. fold code in set_file_props and

close_file.

(close_file): Move lock check here. Cleanup hash walking.

(set_file_props): New function.

(fetch_for_file): Update caller.

(set_dir_prop): New function.

(fetch_for_dir): Update caller.

  1. … 2 more files in changeset.
Following up on r1557207, remove the old style xml parser from the ra_serf

internal api.

* subversion/libsvn_ra_serf/inherited_props.c

(get_iprops_via_more_requests): Update caller.

* subversion/libsvn_ra_serf/property.c

(propfind_context_t): Remove done list support.

(propfind_closed): Don't add to done list.

(svn_ra_serf__deliver_props): Remove unused argument.

* subversion/libsvn_ra_serf/ra_serf.h

(ns_t): Move to xml.c

(ra_serf_list_t): Move to replay.c

(svn_ra_serf__xml_state_t,

svn_ra_serf__xml_parser_t,

svn_ra_serf__xml_start_element_t,

svn_ra_serf__xml_end_element_t,

svn_ra_serf__xml_cdata_chunk_handler_t,

svn_ra_serf__xml_parser_t): Remove.

(svn_ra_serf__handle_xml_parser,

svn_ra_serf__xml_push_state,

svn_ra_serf__xml_pop_state,

svn_ra_serf__define_ns): Remove unused functions.

(svn_ra_serf__expand_ns): Hide from internal api.

(svn_ra_serf__deliver_props): Remove unused argument.

* subversion/libsvn_ra_serf/replay.c

(ra_serf_list_t): Move definition here.

(svn_ra_serf__replay_range): Update caller.

* subversion/libsvn_ra_serf/update.c

(fetch_for_file,

fetch_for_dir): Update caller.

* subversion/libsvn_ra_serf/util.c

(start_xml,

end_xml,

cdata_xml,

add_done_item): Remove functions.

(svn_ra_serf__handle_xml_parser): Remove function.

* subversion/libsvn_ra_serf/xml.c

(svn_ra_serf__ns_t): Move definition here.

(svn_ra_serf__define_ns): Remove function.

(svn_ra_serf__expand_ns): Rename to ...

(expand_ns): ... this and make static.

(svn_ra_serf__xml_push_state,

svn_ra_serf__xml_pop_state): Remove functions.

(svn_ra_serf__xml_cb_start): Update caller.

  1. … 6 more files in changeset.
Add some comments explaining what interface a function implements.

No functional changes.

* subversion/libsvn_ra_serf/log.c

(create_log_body): Add comment.

* subversion/libsvn_ra_serf/merge.c

(create_merge_body): Add comment.

* subversion/libsvn_ra_serf/mergeinfo.c

(create_mergeinfo_body): Add comment.

* subversion/libsvn_ra_serf/options.c

(create_options_body,

create_simple_options_body): Add comment.

* subversion/libsvn_ra_serf/property.c

(create_propfind_body): Add comment.

* subversion/libsvn_ra_serf/replay.c

(create_replay_body): Add comment.

  1. … 5 more files in changeset.
Consolidate http status and server error reporting in a new handler

callback to avoid leaking server errors (which causes an error leak)

and to simplify usage. This patch also removes the xml handling done

handler that was a workaround for this plumbing for a few specific

handlers.

This finally makes it possible to make progress towards converting

the update implementation to the transition based xml parser.

* subversion/libsvn_ra_serf/blame.c

(svn_ra_serf__get_file_revs): Update caller.

* subversion/libsvn_ra_serf/getdate.c

(svn_ra_serf__get_dated_revision): Update caller.

* subversion/libsvn_ra_serf/getlocations.c

(svn_ra_serf__get_locations): Update caller.

* subversion/libsvn_ra_serf/getlocationsegments.c

(svn_ra_serf__get_location_segments): Update caller.

* subversion/libsvn_ra_serf/getlocks.c

(svn_ra_serf__get_locks): Update caller.

* subversion/libsvn_ra_serf/get_deleted_rev.c

(svn_ra_serf__get_deleted_rev): Update caller.

* subversion/libsvn_ra_serf/get_lock.c

(svn_ra_serf__get_lock): Update caller.

* subversion/libsvn_ra_serf/inherited_props.c

(svn_ra_serf__get_inherited_props): Update caller.

* subversion/libsvn_ra_serf/lock.c

(run_locks): Update caller. Handle server errors the new way.

* subversion/libsvn_ra_serf/log.c

(svn_ra_serf__get_log): Update caller.

* subversion/libsvn_ra_serf/merge.c

(svn_ra_serf__run_merge): Update caller.

* subversion/libsvn_ra_serf/mergeinfo.c

(svn_ra_serf__get_mergeinfo): Update caller.

* subversion/libsvn_ra_serf/multistatus.c

(multistatus_opened): Document a bit of history.

(multistatus_closed): Update for baton changes.

(multistatus_done): Rename to...

(svn_ra_serf__server_error_create): ... this and update usage

pattern to avoid error leaks. Add some comments.

(svn_ra_serf__setup_error_parsing): Update caller.

(svn_ra_serf__handle_server_error): Handle eof for 207 responses.

* subversion/libsvn_ra_serf/options.c

(create_options_req): Update caller. Use standard error handling.

* subversion/libsvn_ra_serf/property.c

(svn_ra_serf__deliver_props): Update caller.

* subversion/libsvn_ra_serf/ra_serf.h

(svn_ra_serf__response_done_delegate_t): New type.

(svn_ra_serf__handler_t): Add done handler.

(svn_ra_serf__xml_done_t): Remove type.

(svn_ra_serf__xml_context_create): Remove argument.

(svn_ra_serf__server_error_t): Remove error and keep track of original

handler instead of just the status line to allow clearing server error.

(svn_ra_serf__server_error_create): New function.

* subversion/libsvn_ra_serf/replay.c

(replay_done): Convert from svn_ra_serf__xml_done_t to

svn_ra_serf__response_done_delegate_t.

(svn_ra_serf__replay): Update caller.

(svn_ra_serf__replay_range): Update caller.

* subversion/libsvn_ra_serf/update.c

(finish_report): Check server error when the response is done.

* subversion/libsvn_ra_serf/util.c

(svn_ra_serf__context_run_one): Remove server error handling.

(handle_response): Remove unexpected status handling from here.

(handle_response_cb): Call done handler (when done).

(response_done): New function.

(svn_ra_serf__create_handler): Setup response_done as default done handler.

* subversion/libsvn_ra_serf/xml.c

(svn_ra_serf__xml_context_t): Remove done callback.

(svn_ra_serf__xml_context_done): Stop calling done callback.

(svn_ra_serf__xml_context_create): Remove done setup.

  1. … 19 more files in changeset.
Cleanup a bit more response checks found when doing the r1554019

handler cleanup.

* subversion/libsvn_ra_serf/commit.c

(close_edit): Replace assertion by proper error. Clear

activity url before/on delete to avoid trying another delete

on failure of the delete.

* subversion/libsvn_ra_serf/inherited_props.c

(svn_ra_serf__get_inherited_props): Expect strict result code.

* subversion/libsvn_ra_serf/options.c

(svn_ra_serf__v2_get_youngest_revnum): Replace assertion by proper

error by moving a bit of code from get_baseline_info here.

* subversion/libsvn_ra_serf/property.c

(retrieve_baseline_info): Check if we really get a revision.

(get_baseline_info): Remove check that is now in

svn_ra_serf__v2_get_youngest_revnum.

  1. … 3 more files in changeset.
Add more http status verifications in libsvn_ra_serf.

* subversion/libsvn_ra_serf/options.c

(svn_ra_serf__v2_get_youngest_revnum,

svn_ra_serf__v1_get_activity_collection,

svn_ra_serf__exchange_capabilities): Report anything but 200 as unexpected.

(svn_ra_serf__probe_proxy): Expect either 200 or 411.

(svn_ra_serf__has_capability): Add error tracing.

* subversion/libsvn_ra_serf/property.c

(svn_ra_serf__wait_for_props): Expect 207 status.

  1. … 1 more file in changeset.
Following up on r1553809, fix some more variable references.

* subversion/libsvn_ra_serf/property.c

(propfind_opened,

create_propfind_body): Update caller.

* subversion/libsvn_ra_serf/serf.c

(svn_ra_serf__rev_prop,

get_dirent_props): Update caller.

* subversion/libsvn_ra_serf/update.c

(start_report,

end_report): Update caller.

  1. … 2 more files in changeset.
Following up on r1553274, revert an libsvn_ra_serf internal api change as

the 'return status errors at the end of the request' fix made this change

unnecessary.

* subversion/libsvn_ra_serf/property.c

(svn_ra_serf__deliver_props): Don't set no_fail_on_http_failure_status.

* subversion/libsvn_ra_serf/ra_serf.h

(svn_ra_serf__deliver_props): Revert documentation change.

* subversion/libsvn_ra_serf/replay.c

(svn_ra_serf__replay_range): Don't set flag to default value.

* subversion/libsvn_ra_serf/update.c

(fetch_file): Don't set flag to default value.

  1. … 3 more files in changeset.
In libsvn_ra_serf: Delay the http status based failure creation until the

response is completely read. This allows reading further responses from the

same connection, which would fail before this patch. This finally allows

handling HTTP 404 errors like other http status failures.

* subversion/libsvn_ra_serf/getlocks.c

(svn_ra_serf__get_locks): Don't fail on 404 errors.

* subversion/libsvn_ra_serf/options.c

(create_options_req): Don't fail via status code as we probe for repositories

here.

* subversion/libsvn_ra_serf/property.c

(svn_ra_serf__deliver_props): Allow unexpected status codes.

* subversion/libsvn_ra_serf/ra_serf.h

(svn_ra_serf__deliver_props): Document status behavior.

* subversion/libsvn_ra_serf/replay.c

(svn_ra_serf__replay_range): Request default error behavior for propfind.

* subversion/libsvn_ra_serf/update.c

(fetch_file,

end_report): Request default error behavior.

* subversion/libsvn_ra_serf/util.c

(handle_server_error): Remove function.

(svn_ra_serf__handle_xml_parser): Remove 404 code.

(handle_response): Remove 404 specialization. Delay status based error

creation until the request is completed, like how we handle server

errors.

(handle_response_cb): Return APR_EOF when serf reported EOF for the request.

  1. … 6 more files in changeset.
Following up on r1552043, handle http status 404 as an http failure. Use the

new non-fatal handle mode (see r1551993) in the few places where a 404 error

is not a failure.

Remove duplicated http status based error messages from the error chains.

* subversion/libsvn_ra_serf/blame.c

(svn_ra_serf__get_file_revs): Avoid duplicated errors.

* subversion/libsvn_ra_serf/commit.c

(open_root): Use standard error when possible.

* subversion/libsvn_ra_serf/getdate.c

(svn_ra_serf__get_dated_revision): Avoid duplicated errors.

* subversion/libsvn_ra_serf/getlocations.c

(svn_ra_serf__get_locations): Avoid duplicated errors.

* subversion/libsvn_ra_serf/getlocationsegments.c

(svn_ra_serf__get_location_segments): Avoid duplicated errors.

* subversion/libsvn_ra_serf/get_lock.c

(svn_ra_serf__get_lock): Avoid duplicated errors.

* subversion/libsvn_ra_serf/inherited_props.c

(svn_ra_serf__get_inherited_props): Avoid duplicated errors.

* subversion/libsvn_ra_serf/log.c

(svn_ra_serf__get_log): Avoid duplicated errors.

* subversion/libsvn_ra_serf/mergeinfo.c

(svn_ra_serf__get_mergeinfo): Avoid duplicated errors.

* subversion/libsvn_ra_serf/options.c

(svn_ra_serf__exchange_capabilities): Avoid duplicated errors.

* subversion/libsvn_ra_serf/property.c

(svn_ra_serf__wait_for_props): Avoid duplicated errors.

* subversion/libsvn_ra_serf/replay.c

(svn_ra_serf__replay): Avoid duplicated errors.

* subversion/libsvn_ra_serf/update.c

(finish_report): Avoid duplicated errors.

  1. … 12 more files in changeset.
Introduce a null-pointer constant that we can use as a termination sentinel

in variable argument lists. This avoids the ugliness of writing

"(char *) NULL" all over the place.

* subversion/include/svn_types.h (SVN_VA_NULL): New symbol.

* subversion/include/svn_dirent_uri.h (svn_dirent_join_many),

subversion/include/svn_path.h (svn_path_join_many),

subversion/include/svn_xml.h (svn_xml_make_open_tag):

Update docstrings, mentioning SVN_VA_NULL as the argument list terminator.

[Lots of implementation files]: Replace typecast-NULL with SVN_VA_NULL in

function calls with variable argument lists.

  1. … 89 more files in changeset.
Fix the #include order such that svn_private_config.h is always

included first before any other svn header - if we also include

svn_hash.h.

* subversion/bindings/javahl/native/org_apache_subversion_javahl_ConfigImpl_Category.cpp,

subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c,

subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c,

subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c,

subversion/libsvn_auth_gnome_keyring/gnome_keyring.c,

subversion/libsvn_client/add.c,

subversion/libsvn_client/cat.c,

subversion/libsvn_client/changelist.c,

subversion/libsvn_client/cleanup.c,

subversion/libsvn_client/commit.c,

subversion/libsvn_client/commit_util.c,

subversion/libsvn_client/copy.c,

subversion/libsvn_client/copy_foreign.c,

subversion/libsvn_client/ctx.c,

subversion/libsvn_client/delete.c,

subversion/libsvn_client/deprecated.c,

subversion/libsvn_client/diff.c,

subversion/libsvn_client/diff_local.c,

subversion/libsvn_client/diff_summarize.c,

subversion/libsvn_client/export.c,

subversion/libsvn_client/externals.c,

subversion/libsvn_client/import.c,

subversion/libsvn_client/info.c,

subversion/libsvn_client/iprops.c,

subversion/libsvn_client/list.c,

subversion/libsvn_client/locking_commands.c,

subversion/libsvn_client/log.c,

subversion/libsvn_client/merge.c,

subversion/libsvn_client/mergeinfo.c,

subversion/libsvn_client/patch.c,

subversion/libsvn_client/prop_commands.c,

subversion/libsvn_client/ra.c,

subversion/libsvn_client/repos_diff.c,

subversion/libsvn_client/resolved.c,

subversion/libsvn_client/revert.c,

subversion/libsvn_client/status.c,

subversion/libsvn_client/switch.c,

subversion/libsvn_client/update.c,

subversion/libsvn_client/util.c,

subversion/libsvn_delta/compat.c,

subversion/libsvn_delta/xdelta.c,

subversion/libsvn_diff/parse-diff.c,

subversion/libsvn_diff/util.c,

subversion/libsvn_fs/access.c,

subversion/libsvn_fs_base/bdb/changes-table.c,

subversion/libsvn_fs_base/bdb/env.c,

subversion/libsvn_fs_base/dag.c,

subversion/libsvn_fs_base/fs.c,

subversion/libsvn_fs_base/lock.c,

subversion/libsvn_fs_base/revs-txns.c,

subversion/libsvn_fs_base/tree.c,

subversion/libsvn_fs_fs/caching.c,

subversion/libsvn_fs_fs/fs_fs.c,

subversion/libsvn_fs/fs-loader.c,

subversion/libsvn_fs_fs/lock.c,

subversion/libsvn_fs_fs/temp_serializer.c,

subversion/libsvn_fs_fs/tree.c,

subversion/libsvn_fs_util/fs-util.c,

subversion/libsvn_ra/compat.c,

subversion/libsvn_ra/deprecated.c,

subversion/libsvn_ra_local/ra_plugin.c,

subversion/libsvn_ra/ra_loader.c,

subversion/libsvn_ra_serf/blame.c,

subversion/libsvn_ra_serf/blncache.c,

subversion/libsvn_ra_serf/commit.c,

subversion/libsvn_ra_serf/getlocations.c,

subversion/libsvn_ra_serf/getlocationsegments.c,

subversion/libsvn_ra_serf/getlocks.c,

subversion/libsvn_ra_serf/inherited_props.c,

subversion/libsvn_ra_serf/log.c,

subversion/libsvn_ra_serf/merge.c,

subversion/libsvn_ra_serf/mergeinfo.c,

subversion/libsvn_ra_serf/options.c,

subversion/libsvn_ra_serf/property.c,

subversion/libsvn_ra_serf/replay.c,

subversion/libsvn_ra_serf/serf.c,

subversion/libsvn_ra_serf/update.c,

subversion/libsvn_ra_serf/util.c,

subversion/libsvn_ra_serf/xml.c,

subversion/libsvn_ra_svn/client.c,

subversion/libsvn_ra_svn/editorp.c,

subversion/libsvn_ra_svn/marshal.c,

subversion/libsvn_repos/authz.c,

subversion/libsvn_repos/commit.c,

subversion/libsvn_repos/delta.c,

subversion/libsvn_repos/deprecated.c,

subversion/libsvn_repos/fs-wrap.c,

subversion/libsvn_repos/hooks.c,

subversion/libsvn_repos/log.c,

subversion/libsvn_repos/replay.c,

subversion/libsvn_repos/reporter.c,

subversion/libsvn_repos/repos.c,

subversion/libsvn_repos/rev_hunt.c,

subversion/libsvn_subr/auth.c,

subversion/libsvn_subr/cmdline.c,

subversion/libsvn_subr/compat.c,

subversion/libsvn_subr/config_auth.c,

subversion/libsvn_subr/config.c,

subversion/libsvn_subr/deprecated.c,

subversion/libsvn_subr/dso.c,

subversion/libsvn_subr/hash.c,

subversion/libsvn_subr/io.c,

subversion/libsvn_subr/mergeinfo.c,

subversion/libsvn_subr/opt.c,

subversion/libsvn_subr/properties.c,

subversion/libsvn_subr/simple_providers.c,

subversion/libsvn_subr/sorts.c,

subversion/libsvn_subr/ssl_client_cert_providers.c,

subversion/libsvn_subr/ssl_client_cert_pw_providers.c,

subversion/libsvn_subr/ssl_server_trust_providers.c,

subversion/libsvn_subr/subst.c,

subversion/libsvn_subr/types.c,

subversion/libsvn_subr/username_providers.c,

subversion/libsvn_subr/utf.c,

subversion/libsvn_subr/win32_crypto.c,

subversion/libsvn_wc/adm_crawler.c,

subversion/libsvn_wc/adm_files.c,

subversion/libsvn_wc/adm_ops.c,

subversion/libsvn_wc/conflicts.c,

subversion/libsvn_wc/copy.c,

subversion/libsvn_wc/deprecated.c,

subversion/libsvn_wc/diff_editor.c,

subversion/libsvn_wc/diff_local.c,

subversion/libsvn_wc/entries.c,

subversion/libsvn_wc/externals.c,

subversion/libsvn_wc/info.c,

subversion/libsvn_wc/lock.c,

subversion/libsvn_wc/node.c,

subversion/libsvn_wc/old-and-busted.c,

subversion/libsvn_wc/props.c,

subversion/libsvn_wc/revert.c,

subversion/libsvn_wc/status.c,

subversion/libsvn_wc/translate.c,

subversion/libsvn_wc/update_editor.c,

subversion/libsvn_wc/upgrade.c,

subversion/libsvn_wc/wc_db.c,

subversion/libsvn_wc/wc_db_update_move.c,

subversion/libsvn_wc/wc_db_wcroot.c,

subversion/libsvn_wc/workqueue.c,

subversion/mod_dav_svn/activity.c,

subversion/mod_dav_svn/deadprops.c,

subversion/mod_dav_svn/lock.c,

subversion/mod_dav_svn/merge.c,

subversion/mod_dav_svn/mod_dav_svn.c,

subversion/mod_dav_svn/reports/update.c,

subversion/mod_dav_svn/repos.c,

subversion/mod_dav_svn/version.c,

subversion/svnadmin/svnadmin.c,

subversion/svnauth/svnauth.c,

subversion/svn/cl-conflicts.c,

subversion/svn/commit-cmd.c,

subversion/svn/conflict-callbacks.c,

subversion/svn/diff-cmd.c,

subversion/svn/help-cmd.c,

subversion/svnlook/svnlook.c,

subversion/svnmucc/svnmucc.c,

subversion/svn/notify.c,

subversion/svn/propedit-cmd.c,

subversion/svn/propget-cmd.c,

subversion/svn/props.c,

subversion/svnrdump/dump_editor.c,

subversion/svnrdump/svnrdump.c,

subversion/svnrdump/util.c,

subversion/svnserve/serve.c,

subversion/svn/status.c,

subversion/svn/status-cmd.c,

subversion/svn/svn.c,

subversion/svnsync/svnsync.c,

subversion/svnsync/sync.c,

subversion/svn/util.c,

subversion/tests/libsvn_fs/fs-test.c,

subversion/tests/libsvn_repos/repos-test.c,

subversion/tests/libsvn_subr/hashdump-test.c,

subversion/tests/libsvn_subr/mergeinfo-test.c,

subversion/tests/libsvn_subr/subst_translate-test.c,

subversion/tests/libsvn_wc/conflict-data-test.c,

subversion/tests/libsvn_wc/op-depth-test.c,

subversion/tests/libsvn_wc/wc-test.c,

subversion/tests/svn_test_fs.c,

tools/dev/fsfs-reorg.c,

tools/server-side/fsfs-stats.c): #include svn_private_config.h first

  1. … 180 more files in changeset.
Silence some compiler warnings.

* configure.ac

(--enable-maintainer-mode): Suppress -Wstring-plus-int.

* subversion/include/private/svn_ra_svn_private.h

* subversion/libsvn_ra_svn/marshal.c

(svn_ra_svn__write_data_log_entry): Change type of a parameter to match what

the caller has.

* subversion/svnserve/serve.c

(log_receiver): Avoid up- then down-casting an integer.

* subversion/libsvn_client/merge.c

(find_gaps_in_merge_source_history): Use the correct variant of abs().

* subversion/libsvn_ra_serf/property.c

(parse_status_code, propfind_closed): Since we use a function that returns

an int64 to parse, just use a 64-bit return type, too. That avoids

an implicit downcast.

* subversion/svnadmin/svnadmin.c

(subcommand_info): Use the correct integer type.

  1. … 6 more files in changeset.
Extend the transition based xml parser in ra_serf with two features:

- explicit http status value checking

- an optional done callback

In multi-request operations as update and replay a success callback

is needed to mark a request as done, and to signal the context loop that

cleanup work is needed.

This commit adds the necessary plumbing to provide better error handling

and to support the conversion of the replay handling, which I will add as

separate patches.

* subversion/libsvn_ra_serf/blame.c

(svn_ra_serf__get_file_revs): Update caller.

* subversion/libsvn_ra_serf/getdate.c

(svn_ra_serf__get_dated_revision): Update caller.

* subversion/libsvn_ra_serf/getlocations.c

(svn_ra_serf__get_locations): Update caller.

* subversion/libsvn_ra_serf/getlocationsegments.c

(svn_ra_serf__get_location_segments): Update caller.

* subversion/libsvn_ra_serf/getlocks.c

(svn_ra_serf__get_locks): Update caller.

* subversion/libsvn_ra_serf/get_deleted_rev.c

(svn_ra_serf__get_deleted_rev): Update caller.

* subversion/libsvn_ra_serf/inherited_props.c

(svn_ra_serf__get_inherited_props): Update caller.

* subversion/libsvn_ra_serf/locks.c

(locks_expected_status): New variable.

(svn_ra_serf__get_lock): Update caller. Expect status 207.

(svn_ra_serf__lock): Update caller.

* subversion/libsvn_ra_serf/log.c

(svn_ra_serf__get_log): Update caller.

* subversion/libsvn_ra_serf/merge.c

(svn_ra_serf__run_merge): Update caller.

* subversion/libsvn_ra_serf/mergeinfo.c

(svn_ra_serf__get_mergeinfo): Update caller.

* subversion/libsvn_ra_serf/options.c

(create_options_req): Update caller.

* subversion/libsvn_ra_serf/property.c

(propfind_expected_status): New variable.

(svn_ra_serf__deliver_props): Update caller. Expect 207.

* subversion/libsvn_ra_serf/ra_serf.h

(svn_ra_serf__xml_done_t): New type.

(svn_ra_serf__xml_context_create): Add done_cb argument.

(svn_ra_serf__create_expat_handler): Add expected status argument.

* subversion/libsvn_ra_serf/util.c

(expat_ctx_t): Add expected status.

(expat_response_handler): Handle expected status. Use slightly safer

check for parser failures.

(svn_ra_serf__create_expat_handler): Store expected_status.

* subversion/libsvn_ra_serf/xml.c

(svn_ra_serf__xml_context_t): Add callback.

(svn_ra_serf__xml_context_done): Call done callback if available.

(svn_ra_serf__xml_context_create): Store done callback.

  1. … 15 more files in changeset.
Use macro for the initial state in serf's transition based xml parser,

instead of just 0.

Suggested by: gstein

* subversion/libsvn_ra_serf/ra_serf.h

(XML_STATE_INITIAL): New macro.

(svn_ra_serf__xml_transition_t): Update documentation.

* subversion/libsvn_ra_serf/blame.c

(blame_state_e):

* subversion/libsvn_ra_serf/getdate.c

(date_state_e):

* subversion/libsvn_ra_serf/getlocations.c

(loc_state_e):

* subversion/libsvn_ra_serf/getlocationsegments.c

(locseg_state_e):

* subversion/libsvn_ra_serf/getlocks.c

(getlocks_state_e):

* subversion/libsvn_ra_serf/get_deleted_rev.c

(drev_state_e):

* subversion/libsvn_ra_serf/inherited_props.c

(iprops_state_e):

* subversion/libsvn_ra_serf/log.c

(log_state_e):

* subversion/libsvn_ra_serf/merge.c

(merge_state_e):

* subversion/libsvn_ra_serf/mergeinfo.c

(mergeinfo_state_e):

* subversion/libsvn_ra_serf/options.c

(options_state_e):

* subversion/libsvn_ra_serf/property.c

(prop_state_e):

* subversion/libsvn_ra_serf/update.c

(report_state_e):

* subversion/libsvn_ra_serf/xml.c

(svn_ra_serf__xml_cb_start): Replace usage 0 with XML_STATE_INITIAL.

Name enums when not already named.

  1. … 14 more files in changeset.