jason wrote: > Hi Hendy, > > There aren't any configurations to do with SVN other than turning it > on. What's happening is no different than standard HTTP errors when > you're trying to push or pull too much stuff. No different then trying > to put a string that's over 1024 bytes into IE, or trying to pass a > string that's larger to 4096 bytes to Apache (so something like > passing 200 facebook "friends" IDs in a string.) > > Yes, I see the same thing with pulling up a PATH on the URL of the svn > repository > > Jasons-15er% svn log -v http://svn.rubyonrails.org/rails trunk > svn: REPORT request failed on '/rails/!svn/bc/7514' > svn: REPORT of '/rails/!svn/bc/7514': Response exceeded maximum number > of header fields. (http://svn.rubyonrails.org) > > The error isn't from subversion it's from the Neon library that > subversion uses for http and webdav access to stuff. > > In ne_request.c, the max header is 8192 bytes > > #define MAX_HEADER_LEN (8192) > > /* Read response headers. Returns NE_* code, sets session error and > * closes connection on error. */ > static int read_response_headers(ne_request *req) > { > char hdr[MAX_HEADER_LEN]; > int ret, count = 0; > > while ((ret = read_message_header(req, hdr, sizeof hdr)) == > NE_RETRY > && ++count < MAX_HEADER_FIELDS) { > char *pnt; > unsigned int hash = 0; > > /* Strip any trailing whitespace */ > pnt = hdr + strlen(hdr) - 1; > while (pnt > hdr && (*pnt == ' ' || *pnt == '\t')) > *pnt-- = '\0'; > > /* Convert the header name to lower case and hash it. */ > for (pnt = hdr; (*pnt != '\0' && *pnt != ':' && > *pnt != ' ' && *pnt != '\t'); pnt++) { > *pnt = ne_tolower(*pnt); > hash = HH_ITERATE(hash,*pnt); > } > > /* Skip over any whitespace before the colon. */ > while (*pnt == ' ' || *pnt == '\t') > *pnt++ = '\0'; > > /* ignore header lines which lack a ':'. */ > if (*pnt != ':') > continue; > > /* NUL-terminate at the colon (when no whitespace before) */ > *pnt++ = '\0'; > > /* Skip any whitespace after the colon... */ > while (*pnt == ' ' || *pnt == '\t') > pnt++; > > /* pnt now points to the header value. */ > NE_DEBUG(NE_DBG_HTTP, "Header Name: [%s], Value: [%s]\n", hdr, pnt); > add_response_header(req, hash, hdr, pnt); > } > > if (count == MAX_HEADER_FIELDS) > ret = aborted( > req, _("Response exceeded maximum number of header fields"), 0); > > return ret; > } > > > Jasons-15er% svn log -v http://svn.rubyonrails.org/rails trunk > svn: REPORT request failed on '/rails/!svn/bc/7514' > svn: REPORT of '/rails/!svn/bc/7514': Response exceeded maximum number > of header fields. (http://svn.rubyonrails.org) > Jasons-15er% svn log -v http://svn-commit.rubyonrails.org/rails trunk > | wc -l > 46380 > > So let's take a look and see > > Nonverbose is fine > > Jasons-15er% svn log http://svn.rubyonrails.org/rails trunk | wc -l > 23132 > > Oddly enough, verbose on the entire repos URL is also fine (leave off > trunk) ... try and figure out that one > > Jasons-15er% svn log -v http://svn.rubyonrails.org/rails | wc -l > 66627 > > Verbose on a specific version is fine > > Jasons-15er% svn log -v -r 7000 http://svn.rubyonrails.org/rails > trunk > ------------------------------------------------------------------------ > r7000 | bitsweat | 2007-06-11 10:06:07 +0200 (Mon, 11 Jun 2007) | 1 > line > Changed paths: > M /trunk/activerecord/lib/active_record/base.rb > > Remove deprecated quote methods, replaced by quote_value so quote can > be used as an attribute name. > ------------------------------------------------------------------------ > > Verbose in a range of 1000 is fine > > Jasons-15er% svn log -v -r 1000:2000 http://svn.rubyonrails.org/rails > trunk | wc -l > 7205 > > Let's now extend that range, the above is 1000, let's keep increasing > that by 1000 until it "breaks" again > > Jasons-15er% svn log -v -r 1:2000 http://svn.rubyonrails.org/rails > trunk | wc -l > svn: REPORT request failed on '/rails/!svn/bc/2000' > svn: REPORT of '/rails/!svn/bc/2000': Response exceeded maximum number > of header fields. (http://svn.rubyonrails.org) > 0 > > And yes the breakpoint is the size of the header fields coming back. > > Let's turn the extraneous headers off-and-on. > > It turns out to be the standard Header add MS-Author-Via "DAV" that > one adds in (and used to be a DAV default) for some window's clients. > > header being sent > > Jasons-15er% svn log -v http://svn.rubyonrails.org/rails/trunk > svn: REPORT request failed on '/rails/!svn/bc/7514/trunk' > svn: REPORT of '/rails/!svn/bc/7514/trunk': Response exceeded maximum > number of header fields. (http://svn.rubyonrails.org) > > header off > > Jasons-15er% svn log -v http://svn-commit.rubyonrails.org/rails/trunk > | wc -l > 46380 > > header being sent > > Jasons-15er% svn log -v http://svn.rubyonrails.org/rails/trunk > svn: REPORT request failed on '/rails/!svn/bc/7514/trunk' > svn: REPORT of '/rails/!svn/bc/7514/trunk': Response exceeded maximum > number of header fields. (http://svn.rubyonrails.org) > > header off > > Jasons-15er% svn log -v http://svn.rubyonrails.org/rails/trunk | wc -l > > 46380 > > The header is off (and for reference one can just turn off mod_headers > entirely) and should be fine now. > > Regards, Jason > > > Thank you very much Jason...!
It seems all to work fine now... :-) As a side note, I'm not sure how mod_headers and DAV internally works, but to me sending repeated, exact duplicate headers for numerous number of times (up to the number of retrieved revisions?) seems a bit too redundant.... especially considering bandwidth isn't that cheap... But I'm not in the position to criticize this... I don't even know how it works. Again, thanks Jason, and thank you Joyent :) -- Hendy Irawan www.hendyirawan.com --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Core" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/rubyonrails-core?hl=en -~----------~----~----~----~------~----~------~--~---
