Index: subversion/mod_dav_svn/util.c =================================================================== --- subversion/mod_dav_svn/util.c (revision 998620) +++ subversion/mod_dav_svn/util.c (working copy) @@ -107,6 +107,9 @@ case SVN_ERR_FS_PATH_ALREADY_LOCKED: status = HTTP_LOCKED; break; + case SVN_ERR_BAD_OLD_VALUE: + status = HTTP_PRECONDITION_FAILED; + break; /* add other mappings here */ } Index: subversion/libsvn_ra_neon/util.c =================================================================== --- subversion/libsvn_ra_neon/util.c (revision 998620) +++ subversion/libsvn_ra_neon/util.c (working copy) @@ -167,6 +167,7 @@ svn_ra_neon__request_t *req; svn_stringbuf_t *description; svn_boolean_t contains_error; + svn_boolean_t contains_precondition_error; } multistatus_baton_t; /* Implements svn_ra_neon__startelm_cb_t. */ @@ -231,9 +232,12 @@ return svn_error_create(SVN_ERR_RA_DAV_REQUEST_FAILED, NULL, _("The request response contained at least " "one error")); + else if (b->contains_precondition_error) + return svn_error_create(SVN_ERR_BAD_OLD_VALUE, NULL, + b->description->data); else return svn_error_create(SVN_ERR_RA_DAV_REQUEST_FAILED, NULL, - b->description->data); + *b->description->data); } break; @@ -260,6 +264,10 @@ else b->propstat_has_error = (status.klass != 2); + /* Handle "412 Precondition Failed" specially */ + if (status.code == 412) + b->contains_precondition_error = TRUE; + free(status.reason_phrase); } else