Author: cmpilato Date: Thu Feb 3 17:58:33 2011 New Revision: 1066898 URL: http://svn.apache.org/viewvc?rev=1066898&view=rev Log: When crawling up parent URLs trying to find repos-global information (such as the WebDAV VCC), tolerate 403 Forbidden responses. It might be that some parent directory of the unreadable thing is itself readable, which gives us a better chance at finding the information we need.
NOTE: We could stand to make this same change in ra_serf, but the naive approach causes all sorts of badness to occur there. * subversion/libsvn_ra_neon/props.c (svn_ra_neon__search_for_starting_props): Tolerate SVN_ERR_RA_DAV_FORBIDDEN, too, in our upward crawl towards a readable parent. Modified: subversion/trunk/subversion/libsvn_ra_neon/props.c Modified: subversion/trunk/subversion/libsvn_ra_neon/props.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_neon/props.c?rev=1066898&r1=1066897&r2=1066898&view=diff ============================================================================== --- subversion/trunk/subversion/libsvn_ra_neon/props.c (original) +++ subversion/trunk/subversion/libsvn_ra_neon/props.c Thu Feb 3 17:58:33 2011 @@ -710,18 +710,19 @@ svn_ra_neon__search_for_starting_props(s ne_uri_free(&parsed_url); /* Try to get the starting_props from the public url. If the - resource no longer exists in HEAD, we'll get a failure. That's - fine: just keep removing components and trying to get the - starting_props from parent directories. */ + resource no longer exists in HEAD or is forbidden, we'll get a + failure. That's fine: just keep removing components and trying + to get the starting_props from parent directories. */ while (! svn_path_is_empty(path_s->data)) { svn_pool_clear(iterpool); err = svn_ra_neon__get_starting_props(rsrc, sess, path_s->data, NULL, iterpool); if (! err) - break; /* found an existing parent! */ + break; /* found an existing, readable parent! */ - if (err->apr_err != SVN_ERR_FS_NOT_FOUND) + if ((err->apr_err != SVN_ERR_FS_NOT_FOUND) && + (err->apr_err != SVN_ERR_RA_DAV_FORBIDDEN)) return err; /* found a _real_ error */ /* else... lop off the basename and try again. */