* subversion/libsvn_ra_serf/commit.c (handle_checkout): Use svn_ra_serf__response_get_location() to do work that was done inline here. Also, ignore handler->done (which is probably the wrong thing to do). Index: subversion/libsvn_ra_serf/commit.c =================================================================== --- subversion/libsvn_ra_serf/commit.c (revision 1350441) +++ subversion/libsvn_ra_serf/commit.c (working copy) @@ -297,30 +297,17 @@ return err; /* Get the resulting location. */ - if (handler->done && handler->sline.code == 201) + if (handler->sline.code == 201) { - serf_bucket_t *hdrs; - apr_uri_t uri; - const char *location; - apr_status_t status; - - hdrs = serf_bucket_response_get_headers(response); - location = serf_bucket_headers_get(hdrs, "Location"); - if (!location) + const char *location = + svn_ra_serf__response_get_location(response, ctx->result_pool); + if (! location) return svn_error_create(SVN_ERR_RA_DAV_MALFORMED_DATA, err, _("No Location header received")); - - status = apr_uri_parse(pool, location, &uri); - - if (status) - err = svn_error_compose_create(svn_error_wrap_apr(status, NULL), err); - - SVN_ERR_ASSERT(ctx->result_pool != NULL); - ctx->resource_url = svn_urlpath__canonicalize(uri.path, - ctx->result_pool); + ctx->resource_url = location; } - return err; + return SVN_NO_ERROR; }