Hi all, I'm working on a thing that links libsvn_ra_serf (default RA in Fedora Linux) as well as other pieces of the SVN libraries.
I am using the 'replay' feature to dump edits from a remote repository. Inadvertently, I requested r0 as my starting_revision. This is my mistake, however: nothing in the generic replay or ra_serf-specific replay code produced a warning or error. This could be improved if r0 is always invalid (first bug). (I am less confident about this one than the next one.) ra_serf makes a series of valid requests (200 OK) before finally asking the server for REPLAY of r0. In this case the server is googlecode.com. In response to the invalid REPLAY it gave a 500 Server Error response. I will attach a pcap. The second bug is: ra_serf ignores the 500 response and then waits forever for a valid response that isn't coming. So at this point the program is just stuck in svn_ra_replay_range -> svn_ra_serf__replay_range -> svn_ra_serf__context_run_wait -> ... -> epoll(2) forever, when it should have aborted and returned an error on the 500. I'm guessing that a fix might involve toggling no_fail_on_http_failure_status or setting up a response_error() handler on the svn_ra_serf__handler_t, but I'm not an expert on SVN internals. I'm using subversion-1.8.10, libserf-1.3.7, and apr-1.5.1 from Fedora 20. Thanks, Conrad
cap_svn_ra_serf_500.pcapng.gz
Description: GNU Zip compressed data