Mercurial > public > mercurial-scm > hg
comparison mercurial/util.py @ 15152:94b200a11cf7 stable
http: handle push of bundles > 2 GB again (issue3017)
It was very elegant that httpsendfile implemented __len__ like a string. It was
however also dangerous because that protocol can't handle sizes bigger than 2 GB.
Mercurial tried to work around that, but it turned out to be too easy to
introduce new errors in this area.
With this change __len__ is no longer implemented at all and the code will work
the same way for short and long posts.
author | Mads Kiilerich <mads@kiilerich.com> |
---|---|
date | Wed, 21 Sep 2011 22:52:00 +0200 |
parents | 64fbd0de9773 |
children | c208dcd0f709 |
comparison
equal
deleted
inserted
replaced
15095:ec222a29bdf0 | 15152:94b200a11cf7 |
---|---|
21 | 21 |
22 # Python compatibility | 22 # Python compatibility |
23 | 23 |
24 def sha1(s): | 24 def sha1(s): |
25 return _fastsha1(s) | 25 return _fastsha1(s) |
26 | |
27 _notset = object() | |
28 def safehasattr(thing, attr): | |
29 return getattr(thing, attr, _notset) is not _notset | |
26 | 30 |
27 def _fastsha1(s): | 31 def _fastsha1(s): |
28 # This function will import sha1 from hashlib or sha (whichever is | 32 # This function will import sha1 from hashlib or sha (whichever is |
29 # available) and overwrite itself with it on the first call. | 33 # available) and overwrite itself with it on the first call. |
30 # Subsequent calls will go directly to the imported function. | 34 # Subsequent calls will go directly to the imported function. |