[issue2080] Allow limiting GET request to less than 4096 chars to be compatible with squid

Thomas Arendsen Hein bugs at mercurial.selenic.com
Tue Mar 9 16:30:02 UTC 2010


New submission from Thomas Arendsen Hein <thomas at intevation.de>:

>From http://www.squid-cache.org/mail-archive/squid-users/200106/0192.html
| Anthony Homo wrote:
|
| > #define MAX_URL 4096
| >
| > I would like to know why the maximum length of an URL has
| > been set to 4096 bytes ? (Is it part of an RFC ?)
| > How is it tunable without modifying the source code ?
|
| RFC: No limit, except note that older proxies or user agents may impose
| a limit.
|
| Squid: Limited to 4096. Should be safe to increase. Objects with very
| long URL's wont be cached properly thou due to a buffering problem on
| cache hits.. (the object will get cached, but subsequent hits will fail
| to verify the URL of the cached file and go direct instead).

I just hit this problem with squid 2.6.x using Mercurial 1.5 on both sides
(and verified with 1.0 on the client side, too) on a repository with 1 head
on the server, 30 local heads and 24180 outgoing changesets.

The request (when disabling the proxy) was:

hg.intevation.org:80 212.95.126.10 - - [09/Mar/2010:17:07:28 +0100] "GET
/mirrors/kernel.org/linux-2.6/?bases=8db10a1076dd2e4ae6428c69e910c31f1220c9aa+ecd893f19e0a662a20d09af08e35c64829a79cff+626595263cb543bab2a2fb2f2722cf7ffcaed32a+558bf0462c169917858a25d76272259d11c55062+60e8a5770d70241d7fa7e06511c60be8ecdd7563+db0c5cd27eb8e31e232bf6bbf8625f42b1b1a6c7+2bbce177cda1e59325805b7cf5af5e3be5e5b75e+23ea7deb015a76dae84b3ab4c183f3ff9e0a15cf+8b4259c01fd50c26d7f79037561d9bf412a53940+9c97cf45bdb8035bf7f50f411d0a5016ddfe0d8c+16540b1ab8008d98405bbad666c018a4b2bec5e5+de1437d542e782096540dd1e81c637c8f4d4b00d+78edd2eea6580ac5eed8658bd5a9727e8c579450+3f1e20c77dc2329ea05aec4556cf6cdf0d5e70d0+4c9038a95e3d7f070de79001d166468b7e9e2aa9+45def273767edbeca3cde480a1e0f07399ef8cf2+fabdc90348207e865236bfd35501b5a236a1ff14+0edb27876adb31b3b3a5bea58756a85eebd66037+6305791ca63fa5d07c2502cf6145b24cd871c072+8d6a3b9ea61f53b21415da4d3820026f1fb6f351+c19547a796470b27047d1806af0ece010cfc0e20+b7ea51a5ef5200200b6c05ecc5de6e13ed00167f+664cc73a39693423231cf67f31b2b6ad74f3630f+6f0b6b28a438a8db3ac2802ddbf12c35b3f2ed9b+07690dbe7cf4e397a174f5c66c394b712409c5e0+7034728455b95470e061266f493ce0cee108e05d+5b243161627f4b8e74944ee36ec8172ae4343fea+3c3544cd82c178e2beb7215a712244e05fa9a8ef+18717dfc03f4da1fc5e201de39b6c2e51bb90ff3+44c0a97dcb10236539beb6b2938f394f0cb8e14a+9eccc1c2290c887cb327b599fb2dbe63139a8d83+b8d7433896ac6d310a6536c6ac764fed278e1582+d88369b5fde278d06f036e3e2b875c197964b518+747ac882bebec083239a6a029ea4252f5f63c9cf+349234576095abb813d4c7542e0f779ae6b0892a+4fd1e33b578c7e4042882579c2ec3af3c7f11ef5+30d6dcdefd12c2a8769c271c44200373ec1f90d2+19e66c6d51a3aaf1b645c6b97693e325fb205c5c+7b452d24b7bde5ea2160ae0566518c9e114a3530+969001c4e12b676e03a954045af60edd658de811+fc577309836055f5c10c49cd95cf198f61c684a9+08dac543e8bc7d5ee192686c0b64e283bdf93034+e509af15d66dd1b90f791f3fa91a07faabd3c60e+1e458e65df5fb795e1f0f1f5d28de03913a3e5b9+49417304f666ac662c066302676ca4cbeb08b122+2fc9e43931119c947901fd822805ed26df2c9e5b+5da668c8fe28335996136cfde1c174e9c1537bf2+db0cf431eece84b9ac024621ceae4604808317a0+b8d1b4a061fc15acdf7de761f96f6b20657137d2+1f66a093763c8b4c9005e45211922a875ed2082e+ee2ca38f1c9e5e3c4fce27dcb90263d5701661d3+ee2ebbb99c0ad2b09cb9907154528ff81bd7c2e5+937141c2a878c06eaf7e0057f856a94b87ac1572+f57f3c0b6847e936c3dfc4101bcc678ac964e1b3+46eec7e219d16b367c99a2e6efddcdae8be85518+d9358eeea6caa2fd320ab83086490d21727be9e9+df87519e5bbda0e3f553e09e8d55c3e73ddea9ff+cc049ef9dd48f6fc9bbbdca6ceb634227fc63200+14b7f0a3c4e5edd71ebe22c3afeb98b169d0e3b9+ca9e9c5ba4ad818990c54500ab731d1b2ed80f46+546c359ac628b8a17e15ce4188a0909e9a574971+7b66a6c06f25fdecd8cda45c7f432b0b86874475+1aa98dbb8e86ca83e8289cbd4a34416c89914346+7d94a4b1921c8d9606ca03ef772010faba8eacb0+5d4ff4226436db27ff5821aa12d4b0321cedfb1c+eeaed117f6f028e6380df6f5d44625ba987b62a4+e6a2703d6f6d780cbd9d33693a2b959527a67066+5fa72e5c97cce26b0f03dd99c8bb7a8b073ac0b6+c26ea26c91e2d96513e1f1440932ce10770f9962+cd86fe4801c64ca0141e22ca19a717d001bb605f+f9307ad5daa34cdabb7054d949d7c1b0e4068bea+ef3a422fcbf7f85a3df1cb0f3b73bac217e08b99+f77f55cc8f777f3f585691edccefad4ce29d81b0+4237e44841dfa7c5c769d6ac5f83a96c1728b2c7+2a5382a4a1bff478858257fa0527e65b1b11a710+1811c7596f7ab340db45a6dfa1d9894bd78e014a+328aa288db51d0bc3032a11560643e1974d1f435+ecf50bac6974c86df0f373aadcc6caa4fed5898a+8fda60bcdbf91d4689fe9483631a50e8641c519a+22cadc1f9dc32b9096464aa33477ab99314ff1f0+a40b63d150d839501ab2365828994956b7cb89dd+235be9d2bcc944d9df7908fd50c1764281a56680+33606615f32b3d8569283e7eb4d7e3bc3b0e5098+7f330a2cdb200956f6b931d8c0310e7dc0b4d485+e91d49a5608ead81e78df4fabefa349099d42fcf+fa5ba202d7454de7c5726e3edc6e56fedae5f313+7915eec230a514cd579b26fcd0b8d5b780efaa13+d5501798ddbefb405b8c68f7214d5d6cd4149992+a8b31372b46b02a74d177d5b9e7ecd766b85be99+36461bed0fcb40c4487d170dc02ed2a5199a36be+fa213115cc9fcf9e80d65c4072ddf211993992d5+e22e0458cbb64757ac2766397ad7f56b51f17b36+89eb3750175939f51f271ab856c32776c92f44b0+30d295cbac2868c46b40111f8b0f1e4aa28859f2+a11a5ef07d746681544ad8047ff7d3bd26a4f3d6+225b60de4e95350d33814629b9babbe6d924a524+d9329723ec8afe2af96cdcf3750105013305d01d+56be0018bf4de60a0a28869b0ddd0310ec2577b7+388e2878fa47a779722aaadde6af619f561fc634+5f0d2531856d2b29456eeeaaa87a2e13bdca8ec4+eaf72d0da565ab80a3e58607a113d9daf844bc9c+d306d21ecf96463da8c4c0c3b29d7e7532daf851+131676c301e03eb9c5dc57ec57f904d86673fdc8+949470e484ffef431f23d18ddf84b6fd7c3451fb+ceb31afd5f1f7ef6d77a0a6d9f06ee17fdf44312+2fc946983cc32675f49c87a8ba7c7d2190c87d24+478e3d256a5a5805ff6d0ab9283f50a60468dfa2+7073e342ac2acb7976fe5e46f55b1d106966001a+2a4f30df3df7c6bb61434de22479e8c03e1bd3ca+f88d52e35315fc500fd1c06f603cba412f4e5113+7fd81bf1dfebf4c5ccfa5d2cafcf9fa5f0b968d3+a85072c66399a598848cb169872d66c4dff5f8ab+b7144b623e055620a24812ffebd995716228ae15+140dbf991e917a19f619b86ab533981670c51a5d+01134a26e6d1310730f4f2b2ac1771ab92973334+b25f1e0bdfa1a5212ebca5bec11d851beb144b00+3aae4d6df7973b1fd5d702f21e8b00d0a7534a86+c18c20e802f1350da67df3526b2e0a3660e78723+49bcf2ee6f89e159321e3b2017cc98bf4e98c4cd+74d74d5059dc08fada518e32936782d691dd6c14+6afb98fe269d54602374432d3eb40bc4e55a6b9a+0bc775640f523ddefef709033c89c1cde04be3c6+5849cff404d5b831b6cfaac7f66287d93d75e98f+7cf3ba290a9fd8b87bb4dc27a9372c55b46c27fc+3ffb4b9812e3e4cd406b142ac66c929b91bd42cf+635267bab62f0e2020172de12c9c5b5595c440c2+6e17a701c46dbf5bcfb488b3039aa980138c8dfd+66f4d4cac67ea39ff93b5e59ad276dc61594c1bc&cmd=changegroupsubset&heads=3e62eaa3069e53525a1ef95fd134216267775307
HTTP/1.1" 200 1154346 "-" "mercurial/proto-1.0"


durin42 suggested on IRC to do changeset discovery by using POSTs and sending
more data preemptively to avoid roundtrips.

----------
messages: 11972
nosy: ThomasAH
priority: feature
status: unread
title: Allow limiting GET request to less than 4096 chars to be compatible with squid
topic: http_proto

____________________________________________________
Mercurial issue tracker <bugs at mercurial.selenic.com>
<http://mercurial.selenic.com/bts/issue2080>
____________________________________________________


More information about the Mercurial-devel mailing list