You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by ph...@apache.org on 2014/04/09 22:06:22 UTC
svn commit: r1586122 - in /subversion/trunk/subversion/libsvn_ra_svn:
client.c marshal.c protocol
Author: philip
Date: Wed Apr 9 20:06:22 2014
New Revision: 1586122
URL: http://svn.apache.org/r1586122
Log:
Add a client-side workaround for an svnserve properties bug
in 1.8.0-1.8.8.
* subversion/libsvn_ra_svn/protocol
(get-file, get-dir): Update to match released implementation.
* subversion/libsvn_ra_svn/client.c
(ra_svn_get_dir): Send want-iprops as "false".
* subversion/libsvn_ra_svn/marshal.c
(svn_ra_svn__write_cmd_get_file): Send want-iprops as "false".
Modified:
subversion/trunk/subversion/libsvn_ra_svn/client.c
subversion/trunk/subversion/libsvn_ra_svn/marshal.c
subversion/trunk/subversion/libsvn_ra_svn/protocol
Modified: subversion/trunk/subversion/libsvn_ra_svn/client.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_svn/client.c?rev=1586122&r1=1586121&r2=1586122&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_ra_svn/client.c (original)
+++ subversion/trunk/subversion/libsvn_ra_svn/client.c Wed Apr 9 20:06:22 2014
@@ -1375,8 +1375,11 @@ static svn_error_t *ra_svn_get_dir(svn_r
SVN_ERR(svn_ra_svn__write_word(conn, pool, SVN_RA_SVN_DIRENT_TIME));
if (dirent_fields & SVN_DIRENT_LAST_AUTHOR)
SVN_ERR(svn_ra_svn__write_word(conn, pool, SVN_RA_SVN_DIRENT_LAST_AUTHOR));
-
- SVN_ERR(svn_ra_svn__write_tuple(conn, pool, "!))"));
+
+ /* Always send the, nominally optional, want-iprops as "false" to
+ workaround a bug in svnserve 1.8.0-1.8.8 that causes the server
+ to see "true" if it is omitted. */
+ SVN_ERR(svn_ra_svn__write_tuple(conn, pool, "!)b)", FALSE));
SVN_ERR(handle_auth_request(sess_baton, pool));
SVN_ERR(svn_ra_svn__read_cmd_response(conn, pool, "rll", &rev, &proplist,
Modified: subversion/trunk/subversion/libsvn_ra_svn/marshal.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_svn/marshal.c?rev=1586122&r1=1586121&r2=1586122&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_ra_svn/marshal.c (original)
+++ subversion/trunk/subversion/libsvn_ra_svn/marshal.c Wed Apr 9 20:06:22 2014
@@ -2092,7 +2092,11 @@ svn_ra_svn__write_cmd_get_file(svn_ra_sv
SVN_ERR(write_tuple_end_list(conn, pool));
SVN_ERR(write_tuple_boolean(conn, pool, props));
SVN_ERR(write_tuple_boolean(conn, pool, stream));
- SVN_ERR(writebuf_write_short_string(conn, pool, ") ) ", 4));
+
+ /* Always send the, nominally optional, want-iprops as "false" to
+ workaround a bug in svnserve 1.8.0-1.8.8 that causes the server
+ to see "true" if it is omitted. */
+ SVN_ERR(writebuf_write_short_string(conn, pool, " false ) ) ", 11));
return SVN_NO_ERROR;
}
Modified: subversion/trunk/subversion/libsvn_ra_svn/protocol
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_svn/protocol?rev=1586122&r1=1586121&r2=1586122&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_ra_svn/protocol (original)
+++ subversion/trunk/subversion/libsvn_ra_svn/protocol Wed Apr 9 20:06:22 2014
@@ -303,18 +303,20 @@ second place for auth-request point as n
get-file
params: ( path:string [ rev:number ] want-props:bool want-contents:bool
- [ want-iprops:bool ] )
+ ? want-iprops:bool )
response: ( [ checksum:string ] rev:number props:proplist
[ inherited-props:iproplist ] )
If want-contents is specified, then after sending response, server
sends file contents as a series of strings, terminated by the empty
string, followed by a second empty command response to indicate
whether an error occurred during the sending of the file.
- NOTE: the standard client never sends want-iprops, it uses get-iprops.
+ NOTE: the standard client doesn't send want-iprops as true, it uses
+ get-iprops, but does send want-iprops as false to workaround a server
+ bug in 1.8.0-1.8.8.
get-dir
params: ( path:string [ rev:number ] want-props:bool want-contents:bool
- ? ( field:dirent-field ... ) [ want-iprops:bool ] )
+ ? ( field:dirent-field ... ) ? want-iprops:bool )
response: ( rev:number props:proplist ( entry:dirent ... )
[ inherited-props:iproplist ] )]
dirent: ( name:string kind:node-kind size:number has-props:bool
@@ -322,7 +324,9 @@ second place for auth-request point as n
[ last-author:string ] )
dirent-field: kind | size | has-props | created-rev | time | last-author
| word
- NOTE: the standard client never sends want-iprops, it uses get-iprops.
+ NOTE: the standard client doesn't send want-iprops as true, it uses
+ get-iprops, but does send want-iprops as false to workaround a server
+ bug in 1.8.0-1.8.8.
check-path
params: ( path:string [ rev:number ] )