Sergey Raevskiy <>

Found Patch
r1579588 r1659314, r1659217, r1659212, r1658482, r1657893, r1657525, r1584576

r1659314 | philip | 2015-02-12 10:48:46 -0600 (Thu, 12 Feb 2015)

* subversion/libsvn_fs_fs/lock.c
  (lock_body): Call apr_pstrdup() when initializing svn_lock_t fields.

Patch by: sergey.raevskiy{_AT_}

r1659217 | philip | 2015-02-12 04:42:45 -0600 (Thu, 12 Feb 2015)

Follow-up to r1658482: Refactor walk_locks() function: remove the redundant
complexity of walk_digest_files() / walk_digests_callback_t.

* subversion/libsvn_fs_fs/lock.c
  (lock_expired): New helper function.
  (get_lock): Use the new function.
  (struct walk_locks_baton,
   walk_digest_files): Remove.
  (walk_locks): Inline code from locks_walker() and walk_digest_files() with
    use of new helper function.

Patch by: sergey.raevskiy{_AT_}

r1659212 | philip | 2015-02-12 04:38:48 -0600 (Thu, 12 Feb 2015)

Simplify implementation of svn_fs_fs__lock() / svn_fs_fs__unlock().

* subversion/libsvn_fs_fs/lock.c
  (schedule_index_update): New helper function.
  (struct lock_info_t,
   struct unlock_info_t): Drop the unused fields.
   unlock_body): Rework the algorithm.

Patch by: sergey.raevskiy{_AT_}

r1658482 | philip | 2015-02-09 11:44:43 -0600 (Mon, 09 Feb 2015)

Fix multiple reporting of the same lock in FSFS.

In some unusual (but not impossible) scenarios this function could report the
same lock multiple times: there should be the path with lock, and one of its
children should be locked as well.

* subversion/libsvn_fs_fs/lock.c
  (walk_digests_callback_t): Remove unused argument and update comment.
  (locks_walker): Update callback.
  (walk_digest_files): Don't walk digest files recursively.

* subversion/tests/libsvn_fs/locks-test.c
  (get_locks_callback): Check if a lock was already reported.
  (parent_and_child_lock): New.
  (test_funcs): Add new test.

Patch by: sergey.raevskiy{_AT_}

r1657893 | philip | 2015-02-06 10:43:12 -0600 (Fri, 06 Feb 2015)

Fix SEGV in libsvn_repos due to legacy lock API when executing
pre-commit hook.

* subversion/subversion/libsvn_repos/hooks.c
  (lock_token_content): Add special handling for 'magic' value
   ((const char *) 1).

* subversion/subversion/tests/libsvn_repos/repos-test.c
  (deprecated_access_context_api): New.
  (test_funcs): Add new test.

Patch by: sergey.raevskiy{_AT_}

r1657525 | philip | 2015-02-05 04:41:26 -0600 (Thu, 05 Feb 2015)

Fix unitialized memory use in svn_fs_fs__lock() / svn_fs_fs__unlock().

Patch by: sergey.raevskiy{_AT_}

* subversion/subversion/libsvn_fs_fs/lock.c
  (lock_body): Move allocation from here ...
  (svn_fs_fs__lock): ... to here.
  (unlock_body): Move allocation from here ...
  (unlock_single, svn_fs_fs__unlock): ... to here.

* subversion/subversion/tests/libsvn_fs/locks-test.c
  (obtain_write_lock_failure_test): New.
  (test_funcs): Add new test.

r1584576 | philip | 2014-04-04 04:25:03 -0500 (Fri, 04 Apr 2014)

Add an XFAIL regression test for issue 3515, a DAV client cannot
refresh a lock using a LOCK request with an If: header.

Patch by: Sergey Raevskiy <sergey.raevskiy{_AT_}>

r1579588 | rhuijben | 2014-03-20 05:59:21 -0500 (Thu, 20 Mar 2014)

Make ra serf properly parse lock timeouts installed by generic dav clients.

* subversion/libsvn_ra_serf/get_lock.c
  (locks_closed): Properly parse timout format. This is the actual fix.

* subversion/libsvn_ra_serf/lock.c
  (locks_closed): Properly parse timeout format from the server response of
    the LOCK requests.

* subversion/tests/cmdline/
  (dav_lock_timeout): New test, creating timeout lock via http request.
  (test_list): Add test.

This issue was
Found by: Sergey Raevskiy <sergey.raevskiy{_AT_}>
(but the patch from his mail doesn't fix the issue on trunk.
 It might have worked around the problem on 1.7.x and 1.8.x)