[PATCH RFC] hgweb: add config option for maxhttpheadersize
Augie Fackler
durin42 at gmail.com
Tue May 3 19:14:06 CDT 2011
On May 3, 2011, at 3:47 PM, Sune Foldager wrote:
>
> Does this look good to you? Setting it to 0, the new arguments-in-headers
> option can then be disabled, for debug or other purposes.
>
> -Sune
>
> # HG changeset patch
> # User Sune Foldager <cryo at cyanite.org>
> # Date 1304455295 -7200
> # Node ID 254b8682218b8257b3d25b23b6fb2b806ca5fd07
> # Parent fa2b596db18201408981e82ef7f9625a838e3ec9
> hgweb: add config option for maxhttpheadersize
>
> diff -r fa2b596db182 -r 254b8682218b mercurial/wireproto.py
> --- a/mercurial/wireproto.py Tue May 03 22:28:08 2011 +0200
> +++ b/mercurial/wireproto.py Tue May 03 22:41:35 2011 +0200
> @@ -233,7 +233,9 @@
> else:
> caps.append('streamreqs=%s' % ','.join(requiredformats))
> caps.append('unbundle=%s' % ','.join(changegroupmod.bundlepriority))
> - caps.append('httpheader=1024')
> + maxsize = repo.ui.configint('server', 'maxhttpheadersize', 1024,
> + untrusted=True)
> + caps.append('httpheader=%d' % maxsize)
This is nice, but what about making the client only drop into headers for args if the total arg length would be longer than some amount?
(That's what I meant to propose in my last mail on this topic, maybe I was unclear.)
> return ' '.join(caps)
> def changegroup(repo, proto, roots):
> diff -r fa2b596db182 -r 254b8682218b tests/test-wireproto.t
> --- a/tests/test-wireproto.t Tue May 03 22:28:08 2011 +0200
> +++ b/tests/test-wireproto.t Tue May 03 22:41:35 2011 +0200
> @@ -54,14 +54,28 @@
> * - - [*] "GET /?cmd=debugwireargs HTTP/1.1" 200 - x-hgarg-1:four=onethousandcharactersxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
> xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&one x-hgarg-2:=un&three=trois&two=deux (glob)
> * - - [*] "GET /?cmd=debugwireargs HTTP/1.1" 200 - x-hgarg-1:four=onethousandcharactersxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
> xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&one x-hgarg-2:=un&three=trois&two=deux (glob)
> +HTTP with httpheader disabled by config:
> +
> + $ HGRCPATH="`pwd`/repo/.hgrc"
> +
> + $ hg serve -R repo -p $HGPORT1 -d --pid-file=hg2.pid -E error2.log -A access2.log --config server.maxhttpheadersize=0
> + $ cat hg2.pid >> $DAEMON_PIDS
> +
> + $ hg debugwireargs http://localhost:$HGPORT1/ un deux trois quatre
> + un deux trois quatre None
> + $ cat error2.log
> + $ cat access2.log
> + * - - [*] "GET /?cmd=capabilities HTTP/1.1" 200 - (glob)
> + * - - [*] "GET /?cmd=debugwireargs&four=quatre&one=un&three=trois&two=deux HTTP/1.1" 200 - (glob)
> + * - - [*] "GET /?cmd=debugwireargs&four=quatre&one=un&three=trois&two=deux HTTP/1.1" 200 - (glob)
> +
> HTTP without the httpheader capability:
> - $ HGRCPATH="`pwd`/repo/.hgrc"
> $ CAP=httpheader
> $ . "$TESTDIR/notcapable"
> - $ hg serve -R repo -p $HGPORT2 -d --pid-file=hg2.pid -E error2.log -A access2.log
> - $ cat hg2.pid >> $DAEMON_PIDS
> + $ hg serve -R repo -p $HGPORT2 -d --pid-file=hg3.pid -E error3.log -A access3.log
> + $ cat hg3.pid >> $DAEMON_PIDS
> $ hg debugwireargs http://localhost:$HGPORT2/ un deux trois quatre
> un deux trois quatre None
> @@ -71,8 +85,8 @@
> eins zwei None None None
> $ hg debugwireargs http://localhost:$HGPORT2/ eins zwei --five fuenf
> eins zwei None None None
> - $ cat error2.log
> - $ cat access2.log
> + $ cat error3.log
> + $ cat access3.log
> * - - [*] "GET /?cmd=capabilities HTTP/1.1" 200 - (glob)
> * - - [*] "GET /?cmd=debugwireargs&four=quatre&one=un&three=trois&two=deux HTTP/1.1" 200 - (glob)
> * - - [*] "GET /?cmd=debugwireargs&four=quatre&one=un&three=trois&two=deux HTTP/1.1" 200 - (glob)
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> http://selenic.com/mailman/listinfo/mercurial-devel
More information about the Mercurial-devel
mailing list