Hi!
I've attached a patch with fix. Log message:
[[[
* subversion/mod_dav_svn/repos.c
(get_resource): Following up on r1850651: Set cleanup handler for
FS warning logging regardless of presence of R->USER.
Patch by: sergey.raevskiy{_AT_}visualsvn.com
]]]
On Thu, Aug 15, 2019 at 8:25 PM Stefan Sperling <[email protected]> wrote:
>
> On Thu, Aug 15, 2019 at 08:14:43PM +0300, Sergey Raevskiy wrote:
> > > /* if an authenticated username is present, attach it to the FS */
> > > if (r->user)
> > > @@ -2503,6 +2529,14 @@ get_resource(request_rec *r,
> > > apr_pool_cleanup_register(r->pool, cleanup_baton,
> > > cleanup_fs_access,
> > > apr_pool_cleanup_null);
> > >
> > > + /* We must degrade the logging context when the request is freed.
> > > */
> > > + cleanup_req_logging_baton =
> > > + apr_pcalloc(r->pool, sizeof(*cleanup_req_logging_baton));
> > > + cleanup_req_logging_baton->fs = repos->fs;
> > > + cleanup_req_logging_baton->connection = r->connection;
> > > + apr_pool_pre_cleanup_register(r->pool, cleanup_req_logging_baton,
> > > + cleanup_req_logging);
> >
> > Is it intended to set-up this cleanup handler only if R->USER is specified?
>
> Thanks Sergey!
>
> Good question. Looking back at this patch, this looks like an accident.
>
> Were you planning on writing a fix?
* subversion/mod_dav_svn/repos.c
(get_resource): Following up on r1850651: Set cleanup handler for
FS warning logging regardless of presence of R->USER.
Patch by: sergey.raevskiy{_AT_}visualsvn.com
Index: subversion/mod_dav_svn/repos.c
===================================================================
--- subversion/mod_dav_svn/repos.c (revision 1865250)
+++ subversion/mod_dav_svn/repos.c (working copy)
@@ -2514,6 +2514,14 @@ get_resource(request_rec *r,
/* capture warnings during cleanup of the FS */
svn_fs_set_warning_func(repos->fs, log_warning_req, r);
+ /* We must degrade the logging context when the request is freed. */
+ cleanup_req_logging_baton =
+ apr_pcalloc(r->pool, sizeof(*cleanup_req_logging_baton));
+ cleanup_req_logging_baton->fs = repos->fs;
+ cleanup_req_logging_baton->connection = r->connection;
+ apr_pool_pre_cleanup_register(r->pool, cleanup_req_logging_baton,
+ cleanup_req_logging);
+
/* if an authenticated username is present, attach it to the FS */
if (r->user)
{
@@ -2529,14 +2537,6 @@ get_resource(request_rec *r,
apr_pool_cleanup_register(r->pool, cleanup_baton, cleanup_fs_access,
apr_pool_cleanup_null);
- /* We must degrade the logging context when the request is freed. */
- cleanup_req_logging_baton =
- apr_pcalloc(r->pool, sizeof(*cleanup_req_logging_baton));
- cleanup_req_logging_baton->fs = repos->fs;
- cleanup_req_logging_baton->connection = r->connection;
- apr_pool_pre_cleanup_register(r->pool, cleanup_req_logging_baton,
- cleanup_req_logging);
-
/* Create an access context based on the authenticated username. */
serr = svn_fs_create_access(&access_ctx, r->user, r->pool);
if (serr)