Modified: subversion/branches/gpg-agent-password-store/subversion/libsvn_wc/adm_crawler.c URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/libsvn_wc/adm_crawler.c?rev=1150751&r1=1150750&r2=1150751&view=diff ============================================================================== --- subversion/branches/gpg-agent-password-store/subversion/libsvn_wc/adm_crawler.c (original) +++ subversion/branches/gpg-agent-password-store/subversion/libsvn_wc/adm_crawler.c Mon Jul 25 15:34:28 2011 @@ -1112,21 +1112,12 @@ svn_wc__internal_transmit_text_deltas(co NULL, NULL, scratch_pool, scratch_pool); - /* Close the two streams to force writing the digest, - if we already have an error, ignore this one. */ - if (err) - { - svn_error_clear(svn_stream_close(base_stream)); - svn_error_clear(svn_stream_close(local_stream)); - } - else - { - SVN_ERR(svn_stream_close(base_stream)); - SVN_ERR(svn_stream_close(local_stream)); - } + /* Close the two streams to force writing the digest */ + err = svn_error_compose_create(err, svn_stream_close(base_stream)); + err = svn_error_compose_create(err, svn_stream_close(local_stream)); - /* If we have an error, it may be caused by a corrupt text base. - Check the checksum and discard `err' if they don't match. */ + /* If we have an error, it may be caused by a corrupt text base, + so check the checksum. */ if (expected_md5_checksum && verify_checksum && !svn_checksum_match(expected_md5_checksum, verify_checksum)) { @@ -1142,19 +1133,20 @@ svn_wc__internal_transmit_text_deltas(co investigate. Other commands could be affected, too, such as `svn diff'. */ - /* Deliberately ignore errors; the error about the - checksum mismatch is more important to return. */ - svn_error_clear(err); if (tempfile) - svn_error_clear(svn_io_remove_file2(*tempfile, TRUE, scratch_pool)); + err = svn_error_compose_create( + err, + svn_io_remove_file2(*tempfile, TRUE, scratch_pool)); - return svn_error_create(SVN_ERR_WC_CORRUPT_TEXT_BASE, - svn_checksum_mismatch_err(expected_md5_checksum, verify_checksum, + err = svn_error_compose_create( + svn_checksum_mismatch_err(expected_md5_checksum, verify_checksum, scratch_pool, _("Checksum mismatch for text base of '%s'"), svn_dirent_local_style(local_abspath, scratch_pool)), - NULL); + err); + + return svn_error_create(SVN_ERR_WC_CORRUPT_TEXT_BASE, err, NULL); } /* Now, handle that delta transmission error if any, so we can stop
Modified: subversion/branches/gpg-agent-password-store/subversion/libsvn_wc/conflicts.c URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/libsvn_wc/conflicts.c?rev=1150751&r1=1150750&r2=1150751&view=diff ============================================================================== --- subversion/branches/gpg-agent-password-store/subversion/libsvn_wc/conflicts.c (original) +++ subversion/branches/gpg-agent-password-store/subversion/libsvn_wc/conflicts.c Mon Jul 25 15:34:28 2011 @@ -215,7 +215,6 @@ resolve_conflict_on_node(svn_wc__db_t *d if (resolve_text) { - svn_stream_t *tmp_stream = NULL; const char *auto_resolve_src; /* Handle automatic conflict resolution before the temporary files are @@ -240,6 +239,7 @@ resolve_conflict_on_node(svn_wc__db_t *d if (conflict_old && conflict_working && conflict_new) { const char *temp_dir; + svn_stream_t *tmp_stream = NULL; svn_diff_t *diff; svn_diff_conflict_display_style_t style = conflict_choice == svn_wc_conflict_choose_theirs_conflict @@ -252,7 +252,7 @@ resolve_conflict_on_node(svn_wc__db_t *d SVN_ERR(svn_stream_open_unique(&tmp_stream, &auto_resolve_src, temp_dir, - svn_io_file_del_on_close, + svn_io_file_del_on_pool_cleanup, pool, pool)); SVN_ERR(svn_diff_file_diff3_2(&diff, @@ -269,6 +269,7 @@ resolve_conflict_on_node(svn_wc__db_t *d NULL, NULL, NULL, NULL, style, pool)); + SVN_ERR(svn_stream_close(tmp_stream)); } else auto_resolve_src = NULL; @@ -283,9 +284,6 @@ resolve_conflict_on_node(svn_wc__db_t *d SVN_ERR(svn_io_copy_file( svn_dirent_join(conflict_dir_abspath, auto_resolve_src, pool), local_abspath, TRUE, pool)); - - if (tmp_stream) - SVN_ERR(svn_stream_close(tmp_stream)); } /* Records whether we found any of the conflict files. */ Modified: subversion/branches/gpg-agent-password-store/subversion/libsvn_wc/copy.c URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/libsvn_wc/copy.c?rev=1150751&r1=1150750&r2=1150751&view=diff ============================================================================== --- subversion/branches/gpg-agent-password-store/subversion/libsvn_wc/copy.c (original) +++ subversion/branches/gpg-agent-password-store/subversion/libsvn_wc/copy.c Mon Jul 25 15:34:28 2011 @@ -312,14 +312,9 @@ copy_versioned_file(svn_wc__db_t *db, /* Copy the (single) node's metadata, and move the new filesystem node into place. */ - if (is_move) - SVN_ERR(svn_wc__db_op_move(db, src_abspath, dst_abspath, - dst_op_root_abspath, work_items, - scratch_pool)); - else - SVN_ERR(svn_wc__db_op_copy(db, src_abspath, dst_abspath, - dst_op_root_abspath, work_items, - scratch_pool)); + SVN_ERR(svn_wc__db_op_copy(db, src_abspath, dst_abspath, + dst_op_root_abspath, is_move, work_items, + scratch_pool)); SVN_ERR(svn_wc__wq_run(db, dir_abspath, cancel_func, cancel_baton, scratch_pool)); @@ -383,14 +378,9 @@ copy_versioned_dir(svn_wc__db_t *db, /* Copy the (single) node's metadata, and move the new filesystem node into place. */ - if (is_move) - SVN_ERR(svn_wc__db_op_move(db, src_abspath, dst_abspath, - dst_op_root_abspath, work_items, - scratch_pool)); - else - SVN_ERR(svn_wc__db_op_copy(db, src_abspath, dst_abspath, - dst_op_root_abspath, work_items, - scratch_pool)); + SVN_ERR(svn_wc__db_op_copy(db, src_abspath, dst_abspath, + dst_op_root_abspath, is_move, work_items, + scratch_pool)); SVN_ERR(svn_wc__wq_run(db, dir_abspath, cancel_func, cancel_baton, scratch_pool)); @@ -499,14 +489,9 @@ copy_versioned_dir(svn_wc__db_t *db, { /* This will be copied as some kind of deletion. Don't touch any actual files */ - if (is_move) - SVN_ERR(svn_wc__db_op_move(db, child_src_abspath, - child_dst_abspath, dst_op_root_abspath, - NULL, scratch_pool)); - else - SVN_ERR(svn_wc__db_op_copy(db, child_src_abspath, - child_dst_abspath, dst_op_root_abspath, - NULL, iterpool)); + SVN_ERR(svn_wc__db_op_copy(db, child_src_abspath, + child_dst_abspath, dst_op_root_abspath, + is_move, NULL, iterpool)); /* Don't recurse on children while all we do is creating not-present children */ Modified: subversion/branches/gpg-agent-password-store/subversion/libsvn_wc/wc_db.c URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/libsvn_wc/wc_db.c?rev=1150751&r1=1150750&r2=1150751&view=diff ============================================================================== --- subversion/branches/gpg-agent-password-store/subversion/libsvn_wc/wc_db.c (original) +++ subversion/branches/gpg-agent-password-store/subversion/libsvn_wc/wc_db.c Mon Jul 25 15:34:28 2011 @@ -3422,8 +3422,8 @@ op_depth_for_copy(apr_int64_t *op_depth, apr_pool_t *scratch_pool); -/* Like svn_wc__db_op_copy()/svn_wc__db_op_move(), but with - WCROOT+LOCAL_RELPATH instead of DB+LOCAL_ABSPATH. */ +/* Like svn_wc__db_op_copy(), but with WCROOT+LOCAL_RELPATH + * instead of DB+LOCAL_ABSPATH. */ static svn_error_t * db_op_copy(svn_wc__db_wcroot_t *src_wcroot, const char *src_relpath, @@ -3655,6 +3655,7 @@ svn_wc__db_op_copy(svn_wc__db_t *db, const char *src_abspath, const char *dst_abspath, const char *dst_op_root_abspath, + svn_boolean_t is_move, const svn_skel_t *work_items, apr_pool_t *scratch_pool) { @@ -3676,7 +3677,7 @@ svn_wc__db_op_copy(svn_wc__db_t *db, VERIFY_USABLE_WCROOT(ocb.dst_wcroot); ocb.work_items = work_items; - ocb.is_move = FALSE; + ocb.is_move = is_move; /* Call with the sdb in src_wcroot. It might call itself again to also obtain a lock in dst_wcroot */ @@ -4715,43 +4716,6 @@ svn_wc__db_temp_working_set_props(svn_wc svn_error_t * -svn_wc__db_op_move(svn_wc__db_t *db, - const char *src_abspath, - const char *dst_abspath, - const char *dst_op_root_abspath, - const svn_skel_t *work_items, - apr_pool_t *scratch_pool) -{ - struct op_copy_baton ocb = {0}; - - SVN_ERR_ASSERT(svn_dirent_is_absolute(src_abspath)); - SVN_ERR_ASSERT(svn_dirent_is_absolute(dst_abspath)); - - SVN_ERR(svn_wc__db_wcroot_parse_local_abspath(&ocb.src_wcroot, - &ocb.src_relpath, db, - src_abspath, - scratch_pool, scratch_pool)); - VERIFY_USABLE_WCROOT(ocb.src_wcroot); - - SVN_ERR(svn_wc__db_wcroot_parse_local_abspath(&ocb.dst_wcroot, - &ocb.dst_relpath, - db, dst_abspath, - scratch_pool, scratch_pool)); - VERIFY_USABLE_WCROOT(ocb.dst_wcroot); - - ocb.work_items = work_items; - ocb.is_move = TRUE; - - /* Call with the sdb in src_wcroot. It might call itself again to - also obtain a lock in dst_wcroot */ - SVN_ERR(svn_sqlite__with_lock(ocb.src_wcroot->sdb, op_copy_txn, &ocb, - scratch_pool)); - - return SVN_NO_ERROR; -} - - -svn_error_t * svn_wc__db_op_modified(svn_wc__db_t *db, const char *local_abspath, apr_pool_t *scratch_pool) Modified: subversion/branches/gpg-agent-password-store/subversion/libsvn_wc/wc_db.h URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/libsvn_wc/wc_db.h?rev=1150751&r1=1150750&r2=1150751&view=diff ============================================================================== --- subversion/branches/gpg-agent-password-store/subversion/libsvn_wc/wc_db.h (original) +++ subversion/branches/gpg-agent-password-store/subversion/libsvn_wc/wc_db.h Mon Jul 25 15:34:28 2011 @@ -1209,12 +1209,17 @@ svn_wc__db_externals_gather_definitions( * This copy is NOT recursive. It simply establishes this one node, plus * incomplete nodes for the children. * + * If IS_MOVE is TRUE, mark this copy operation as the copy-half of + * a move. The delete-half of the move needs to be created separately + * with svn_wc__db_op_delete(). + * * Add WORK_ITEMS to the work queue. */ svn_error_t * svn_wc__db_op_copy(svn_wc__db_t *db, const char *src_abspath, const char *dst_abspath, const char *dst_op_root_abspath, + svn_boolean_t is_move, const svn_skel_t *work_items, apr_pool_t *scratch_pool); @@ -1227,8 +1232,7 @@ svn_wc__db_op_copy(svn_wc__db_t *db, * properly deleted. * * Usually this operation is directly followed by a call to svn_wc__db_op_copy - * or svn_wc__db_op_move which performs the real copy from src_abspath to - * dst_abspath. + * which performs the real copy from src_abspath to dst_abspath. */ svn_error_t * svn_wc__db_op_copy_shadowed_layer(svn_wc__db_t *db, @@ -1428,23 +1432,6 @@ svn_wc__db_op_delete(svn_wc__db_t *db, apr_pool_t *scratch_pool); -/* Move the node at SRC_ABSPATH (in NODES and ACTUAL_NODE tables) to - * DST_ABSPATH, both in DB but not necessarily in the same WC. The parent - * of DST_ABSPATH must be a versioned directory. - * - * This move is NOT recursive. It simply establishes this one node, plus - * incomplete nodes for the children. - * - * Add WORK_ITEMS to the work queue. */ -svn_error_t * -svn_wc__db_op_move(svn_wc__db_t *db, - const char *src_abspath, - const char *dst_abspath, - const char *dst_op_root_abspath, - const svn_skel_t *work_items, - apr_pool_t *scratch_pool); - - /* ### mark PATH as (possibly) modified. "svn edit" ... right API here? */ svn_error_t * svn_wc__db_op_modified(svn_wc__db_t *db, Modified: subversion/branches/gpg-agent-password-store/subversion/mod_authz_svn/mod_authz_svn.c URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/mod_authz_svn/mod_authz_svn.c?rev=1150751&r1=1150750&r2=1150751&view=diff ============================================================================== --- subversion/branches/gpg-agent-password-store/subversion/mod_authz_svn/mod_authz_svn.c (original) +++ subversion/branches/gpg-agent-password-store/subversion/mod_authz_svn/mod_authz_svn.c Mon Jul 25 15:34:28 2011 @@ -245,7 +245,7 @@ static char * get_username_to_authorize(request_rec *r, authz_svn_config_rec *conf) { char *username_to_authorize = r->user; - if (conf->force_username_case) + if (username_to_authorize && conf->force_username_case) { username_to_authorize = apr_pstrdup(r->pool, r->user); convert_case(username_to_authorize, Modified: subversion/branches/gpg-agent-password-store/subversion/mod_dav_svn/repos.c URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/mod_dav_svn/repos.c?rev=1150751&r1=1150750&r2=1150751&view=diff ============================================================================== --- subversion/branches/gpg-agent-password-store/subversion/mod_dav_svn/repos.c (original) +++ subversion/branches/gpg-agent-password-store/subversion/mod_dav_svn/repos.c Mon Jul 25 15:34:28 2011 @@ -1063,7 +1063,7 @@ prep_private(dav_resource_combined *comb { svn_error_clear(serr); comb->res.exists = FALSE; - return dav_svn__new_error(pool, HTTP_INTERNAL_SERVER_ERROR, 0, + return dav_svn__new_error(pool, HTTP_NOT_FOUND, 0, "Named transaction doesn't exist."); } return dav_svn__convert_err(serr, HTTP_INTERNAL_SERVER_ERROR, Modified: subversion/branches/gpg-agent-password-store/subversion/mod_dav_svn/util.c URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/mod_dav_svn/util.c?rev=1150751&r1=1150750&r2=1150751&view=diff ============================================================================== --- subversion/branches/gpg-agent-password-store/subversion/mod_dav_svn/util.c (original) +++ subversion/branches/gpg-agent-password-store/subversion/mod_dav_svn/util.c Mon Jul 25 15:34:28 2011 @@ -37,6 +37,7 @@ #include "dav_svn.h" #include "private/svn_fspath.h" +#include "private/svn_string_private.h" dav_error * dav_svn__new_error(apr_pool_t *pool, @@ -678,7 +679,7 @@ request_body_to_string(svn_string_t **re content_length_str = apr_table_get(r->headers_in, "Content-Length"); if (content_length_str) { - if (apr_strtoff(&content_length, content_length_str, &endp, 10) + if (svn__strtoff(&content_length, content_length_str, &endp, 10) || endp == content_length_str || *endp || content_length < 0) { ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, "Invalid Content-Length");