Philip Martin <[email protected]> writes:
> What sort of URI do we have to supply? Will a session relative <f> do?
> Or a server relative </obj/repo/A/f>? Or a full scheme/host/port/path?
RFC 2518 says:
9.4 If Header
If = "If" ":" ( 1*No-tag-list | 1*Tagged-list)
No-tag-list = List
Tagged-list = Resource 1*List
Resource = Coded-URL
List = "(" 1*(["Not"](State-token | "[" entity-tag "]")) ")"
State-token = Coded-URL
Coded-URL = "<" absoluteURI ">"
Note that the absoluteURI production is defined in [RFC2396].
and 2396 says
absoluteURI = scheme ":" ( hier_part | opaque_part )
so how about this patch:
Index: subversion/libsvn_ra_serf/commit.c
===================================================================
--- subversion/libsvn_ra_serf/commit.c (revision 1488294)
+++ subversion/libsvn_ra_serf/commit.c (working copy)
@@ -804,8 +804,15 @@
if (token)
{
const char *token_header;
+ const char *token_uri;
+ apr_uri_t uri = commit_ctx->session->session_url;
- token_header = apr_pstrcat(pool, "(<", token, ">)", (char *)NULL);
+ uri.path = (char *)svn_path_url_add_component2(uri.path, relpath,
+ pool);
+ token_uri = apr_uri_unparse(pool, &uri, 0);
+
+ token_header = apr_pstrcat(pool, "<", token_uri, "> (<", token, ">)",
+ (char *)NULL);
serf_bucket_headers_set(headers, "If", token_header);
}
}
--
Certified & Supported Apache Subversion Downloads:
http://www.wandisco.com/subversion/download