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 <s...@apache.org> 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)

Reply via email to