Log Message: |
Following up on r1609499, which made all ra layers change the auth baton in a
way that affects all ra session using it, make it possible to create a slave
auth baton that shares everything with the parent baton except for the
parameters.
Each ra session gets its own slave parameters, and thereby allows
applying their own settings from the server group (and other origins),
without affecting other ra sessions.
* subversion/include/private/svn_auth_private.h
(svn_auth__apply_config_for_server): Rename to...
(svn_auth__make_session_auth): ... this and provide a new slave auth
baton as output argument.
* subversion/libsvn_ra/ra_loader.c
(svn_ra_open4): Create scratch pool. Create slave auth instance.
Update caller.
* subversion/libsvn_ra/ra_loader.h
(svn_ra__vtable_t.open_session): Add auth_baton argument and split pools.
* subversion/libsvn_ra/wrapper_template.h
(compat_open): Update caller.
* subversion/libsvn_ra_local/ra_local.h
(svn_ra_local__session_baton_t): Store auth baton directly.
* subversion/libsvn_ra_local/ra_plugin.c
(get_username): Update auth usage.
(svn_ra_local__open): Update arguments. Store auth baton.
* subversion/libsvn_ra_serf/ra_serf.h
(svn_ra_serf__session_t): Store auth baton reference.
* subversion/libsvn_ra_serf/serf.c
(load_config): Use slave auth baton.
(svn_ra_serf__open): Update arguments. Store auth baton.
Remove local subpool usage with scratch pool.
* subversion/libsvn_ra_serf/util.c
(ssl_server_cert,
handle_client_cert,
handle_client_cert_pw,
svn_ra_serf__credentials_callback): Use auth from session instead
of from callbacks.
* subversion/libsvn_ra_svn/client.c
(open_session): Update arguments. Store auth baton.
(ra_svn_open): Add argument.
(ra_svn_open_pool): Remove function that just doubled the pool.
(ra_svn_vtable): Update reference.
* subversion/libsvn_ra_svn/cyrus_auth.c
(svn_ra_svn__do_cyrus_auth): Use auth from session instead of from callbacks.
* subversion/libsvn_ra_svn/internal_auth.c
(svn_ra_svn__do_internal_auth): Use auth from session instead of from callbacks.
* subversion/libsvn_ra_svn/ra_svn.h
(svn_ra_svn__session_baton_t): Add auth baton.
* subversion/libsvn_subr/auth.c
(svn_auth_baton_t): Add variable.
(svn_auth_open): Document initial value.
(auth_NULL): New constant.
(svn_auth_set_parameter): Store value in slave parameters if that
exists.
(svn_auth_get_parameter): Check slave parameters before primary
parameters.
(svn_auth__apply_config_for_server): Rename to...
(svn_auth__make_session_auth): ... this and create a slave auth baton
with the new values instead of changing the passed baton.
|