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.