cpython/Lib
Jeremy Hylton 8531b1b28d Send HTTP requests with a single send() call instead of many.
The implementation now stores all the lines of the request in a buffer
and makes a single send() call when the request is finished,
specifically when endheaders() is called.

This appears to improve performance.  The old code called send() for
each line.  The sends are all short, so they caused bad interactions
with the Nagle algorithm and delayed acknowledgements.  In simple
tests, the second packet was delayed by 100s of ms.  The second send was
delayed by the Nagle algorithm, waiting for the ack.  The delayed ack
strategy delays the ack in hopes of piggybacking it on a data packet,
but the server won't send any data until it receives the complete
request.

This change minimizes the problem that Nagle + delayed ack will cause
a problem, although a request large enough to be broken into two
packets will still suffer some delay.  Luckily the MSS is large enough
to accomodate most single packets.

XXX Bug fix candidate?
2002-07-16 21:21:11 +00:00
..
compiler Remove uses of string module and stat.ST_MODE 2002-06-06 18:30:10 +00:00
curses Patch #521670: Remove unused sys import. 2002-02-23 22:31:53 +00:00
distutils Well, Fred never did explain why the code to determine whether the 2002-07-12 09:16:44 +00:00
email _structure(): Don't get the whole Content-Type: header, just get the 2002-07-11 20:24:36 +00:00
encodings Palm OS encoding from Sjoerd Mullender 2002-07-12 14:36:22 +00:00
hotshot Minor cleanup: 2002-05-29 19:40:36 +00:00
idlelib 1. Prevent Undo before IOmark in PyShell.PyShell 2002-07-11 04:33:41 +00:00
lib-old Use string.ascii_letters instead of string.letters (SF bug #226706). 2001-07-20 19:05:50 +00:00
lib-tk Use string methods, remove import string 2002-05-31 20:51:31 +00:00
plat-aix3 Remove obsolete entries from regen scripts. 2001-07-31 08:47:55 +00:00
plat-aix4 Remove obsolete entries from regen scripts. 2001-07-31 08:47:55 +00:00
plat-atheos Patch #488073: AtheOS port. 2002-06-11 06:22:31 +00:00
plat-beos5 Remove obsolete entries from regen scripts. 2001-07-31 08:47:55 +00:00
plat-freebsd2 Remove obsolete entries from regen scripts. 2001-07-31 08:47:55 +00:00
plat-freebsd3 Remove obsolete entries from regen scripts. 2001-07-31 08:47:55 +00:00
plat-freebsd4 Remove obsolete entries from regen scripts. 2001-07-31 08:47:55 +00:00
plat-freebsd5 Remove obsolete entries from regen scripts. 2001-07-31 08:47:55 +00:00
plat-generic Remove obsolete entries from regen scripts. 2001-07-31 08:47:55 +00:00
plat-irix5 Remove obsolete entries from regen scripts. 2001-07-31 08:47:55 +00:00
plat-irix6 Regenerated for Irix 6.5. 2002-03-17 21:49:20 +00:00
plat-linux1 Remove obsolete entries from regen scripts. 2001-07-31 08:47:55 +00:00
plat-linux2 Regenerated for Linux 2.2.4. 2001-12-22 15:23:50 +00:00
plat-netbsd1 Remove obsolete entries from regen scripts. 2001-07-31 08:47:55 +00:00
plat-next3 Do no regenerate modules that should no longer be here. 2001-05-10 15:52:47 +00:00
plat-os2emx Create and populate OS/2 EMX port platform specific library directory: 2002-02-22 11:06:30 +00:00
plat-riscos SF patch 493739 2 Bugfixes for 2.2c1 (RISC OS specific), from 2001-12-15 22:12:47 +00:00
plat-sunos4 Do no regenerate modules that should no longer be here. 2001-05-10 15:52:47 +00:00
plat-sunos5 Regenerate for Solaris 8. 2001-08-09 12:33:32 +00:00
plat-unixware7 Remove obsolete entries from regen scripts. 2001-07-31 08:47:55 +00:00
site-packages
test The atexit module effectively turned itself off if sys.exitfunc already 2002-07-16 19:30:59 +00:00
xml Remove bogus assignment to self.length in NamedNodeMap.__delitem__(). 2002-07-02 17:27:06 +00:00
BaseHTTPServer.py Use is None rather than general boolean 2002-05-31 23:03:33 +00:00
Bastion.py added __all__ lists to a number of Python modules 2001-01-20 19:54:20 +00:00
CGIHTTPServer.py Replaced obsolete stat module constants with equivalent attributes 2002-06-01 19:51:15 +00:00
ConfigParser.py Remove uses of the string and types modules: 2002-06-03 15:58:32 +00:00
Cookie.py Apply SF 562987 modernizing Cookie to subclass from dict instead of UserDict 2002-06-26 15:19:01 +00:00
FCNTL.py Add a new FCNTL.py backward compatibility module that issues a deprecation 2001-05-09 21:13:23 +00:00
HTMLParser.py Simplify code to remove an unnecessary test. 2002-05-14 15:50:11 +00:00
MimeWriter.py Patch 560023 adding docstrings. 2.2 Candidate (after verifying modules were not updated after 2.2). 2002-05-29 16:18:42 +00:00
Queue.py Code modernization. Replace v=s[i]; del s[i] with single lookup v=s.pop(i) 2002-06-30 03:39:14 +00:00
SimpleHTTPServer.py SF 563203. Replaced 'has_key()' with 'in'. 2002-06-01 14:18:47 +00:00
SimpleXMLRPCServer.py _dispatch(): Do no re-define the resolve_dotted_atttribute() function 2001-09-29 04:54:33 +00:00
SocketServer.py SF bug #543318 (Frank J. Tobin). 2002-04-15 00:36:48 +00:00
StringIO.py Remove uses of the string and types modules: 2002-06-03 15:58:32 +00:00
TERMIOS.py No need to call filterwarnings() to suppress further warnings from this 2001-02-27 21:51:47 +00:00
UserDict.py Add pop() to UserDict. 2002-04-13 14:03:38 +00:00
UserList.py Patch #424475: Speed-up tp_compare usage, by special-casing the common 2001-06-09 07:34:05 +00:00
UserString.py More --disable-unicode stuff. 2002-05-20 14:48:16 +00:00
__future__.py Repair repr of future-features (wasn't updated to include the new 2001-08-24 17:13:54 +00:00
__phello__.foo.py Fix the frozen bytecode for __hello__ (betcha didn't know that existed 2001-10-18 18:49:37 +00:00
aifc.py SF #515004 cleanup 2002-02-11 17:56:27 +00:00
anydbm.py SF 563203. Replaced 'has_key()' with 'in'. 2002-06-01 14:18:47 +00:00
asynchat.py Code modernization. Replace v=s[i]; del s[i] with single lookup v=s.pop(i) 2002-06-30 03:39:14 +00:00
asyncore.py Convert a pile of obvious "yes/no" functions to return bool. 2002-04-04 22:55:58 +00:00
atexit.py The atexit module effectively turned itself off if sys.exitfunc already 2002-07-16 19:30:59 +00:00
audiodev.py Commenting out the getfillable() method -- it's broken, and nobody 2001-08-13 15:04:33 +00:00
base64.py The first batch of changes recommended by the fixdiv tool. These are 2001-09-04 19:14:14 +00:00
bdb.py SF 563203. Replaced 'has_key()' with 'in'. 2002-06-01 14:18:47 +00:00
binhex.py The first batch of changes recommended by the fixdiv tool. These are 2001-09-04 19:14:14 +00:00
bisect.py The first batch of changes recommended by the fixdiv tool. These are 2001-09-04 19:14:14 +00:00
calendar.py SF 570727 indexer() class no longer needed since lists now support slicing 2002-06-20 03:38:12 +00:00
cgi.py Code modernization. Replace v=s[i]; del s[i] with single lookup v=s.pop(i) 2002-06-30 03:39:14 +00:00
cgitb.py Also look up variable names in __builtins__ if not found in globals. 2002-06-26 07:10:56 +00:00
chunk.py Partial introduction of bools where appropriate. 2002-04-07 06:36:23 +00:00
cmd.py Code modernization. Replace v=s[i]; del s[i] with single lookup v=s.pop(i) 2002-06-30 03:39:14 +00:00
code.py Convert a pile of obvious "yes/no" functions to return bool. 2002-04-04 22:55:58 +00:00
codecs.py Add constants BOM_UTF8, BOM_UTF16, BOM_UTF16_LE, BOM_UTF16_BE, 2002-06-04 15:16:29 +00:00
codeop.py A fiddled version of the rest of Michael Hudson's SF patch 2001-08-17 22:11:27 +00:00
colorsys.py added __all__ lists to a number of Python modules 2001-01-20 19:54:20 +00:00
commands.py added __all__ lists to a number of Python modules 2001-01-20 19:54:20 +00:00
compileall.py Replaced obsolete stat module constants with equivalent attributes 2002-06-01 19:51:15 +00:00
copy.py SF patch 560794 (Greg Chapman): deepcopy can't handle custom 2002-06-10 21:10:27 +00:00
copy_reg.py _reduce(): Avoid infinite recursion in the pickler when self.__class__ 2001-12-27 16:27:28 +00:00
dbhash.py Fix bug #422702: Make flag argument to open optional, and document it that way. 2001-06-05 05:33:19 +00:00
difflib.py SF 563203. Replaced 'has_key()' with 'in'. 2002-06-01 14:18:47 +00:00
dircache.py Replaced obsolete stat module constants with equivalent attributes 2002-06-01 19:51:15 +00:00
dis.py The opcode FOR_LOOP no longer exists. 2002-06-13 17:59:51 +00:00
doctest.py SF 563203. Replaced 'has_key()' with 'in'. 2002-06-01 14:18:47 +00:00
dospath.py Replaced obsolete stat module constants with equivalent attributes 2002-06-01 19:51:15 +00:00
dumbdbm.py SF 563203. Replaced 'has_key()' with 'in'. 2002-06-01 14:25:41 +00:00
filecmp.py Replaced .keys() with dictionary iterators 2002-06-02 18:55:56 +00:00
fileinput.py Replace obsolete stat module constants with 2002-06-06 09:48:13 +00:00
fnmatch.py SF 563203. Replaced 'has_key()' with 'in'. 2002-06-01 14:18:47 +00:00
formatter.py Remove uses of the string and types modules: 2002-06-03 15:58:32 +00:00
fpformat.py more __all__ updates 2001-01-20 23:34:12 +00:00
ftplib.py Fix a regression from the 1.68->1.69 checkin: 2002-06-03 10:41:45 +00:00
getopt.py gnu_getopt should be exported in __all__ 2002-06-07 03:26:43 +00:00
getpass.py win_getpass(): if sys.stdin is not sys.__stdin__, use 2001-08-30 15:07:44 +00:00
gettext.py Replace boolean test with is None 2002-06-01 01:29:16 +00:00
glob.py Patch #409973: Speedup glob.glob, add fnmatch.filter. 2001-06-06 06:24:38 +00:00
gopherlib.py SF 563203. Replaced 'has_key()' with 'in'. 2002-06-01 14:18:47 +00:00
gzip.py Patch 560023 adding docstrings. 2.2 Candidate (after verifying modules were not updated after 2.2). 2002-05-29 16:18:42 +00:00
hmac.py Remove uses of the string and types modules: 2002-06-03 15:58:32 +00:00
htmlentitydefs.py removed __all__ from several modules 2001-02-18 03:30:53 +00:00
htmllib.py Patch 560023 adding docstrings. 2.2 Candidate (after verifying modules were not updated after 2.2). 2002-05-29 16:18:42 +00:00
httplib.py Send HTTP requests with a single send() call instead of many. 2002-07-16 21:21:11 +00:00
ihooks.py SF 563203. Replaced 'has_key()' with 'in'. 2002-06-01 14:18:47 +00:00
imaplib.py Code modernization. Replace v=s[i]; del s[i] with single lookup v=s.pop(i) 2002-06-30 03:39:14 +00:00
imghdr.py a few more modules get __all__ 2001-01-24 06:27:27 +00:00
imputil.py Close SF patch 523944: importing modules with foreign newlines. 2002-06-28 23:32:51 +00:00
inspect.py Replaced .keys() with dictionary iterators 2002-06-02 18:55:56 +00:00
keyword.py Updated keyword.py for "yield". 2001-06-19 00:26:25 +00:00
linecache.py Replaced obsolete stat module constants with equivalent attributes 2002-06-01 19:51:15 +00:00
locale.py eliminate unqualified except when checking for presence of LC_MESSAGES 2002-03-25 21:40:36 +00:00
macpath.py Replaced obsolete stat module constants with equivalent attributes 2002-06-01 19:51:15 +00:00
macurl2path.py String method conversion. 2001-02-09 09:48:45 +00:00
mailbox.py Code modernization. Replace v=s[i]; del s[i] with single lookup v=s.pop(i) 2002-06-30 03:39:14 +00:00
mailcap.py Replaced .keys() with dictionary iterators 2002-06-02 18:55:56 +00:00
markupbase.py Remove uses of the string and types modules: 2002-06-03 15:58:32 +00:00
mhlib.py Replace .keys() with .iteritems(). Second review and test by Alex. 2002-06-04 02:17:04 +00:00
mimetools.py SF 563203. Replaced 'has_key()' with 'in'. 2002-06-01 14:18:47 +00:00
mimetypes.py SF 563203. Replaced 'has_key()' with 'in'. 2002-06-01 14:18:47 +00:00
mimify.py Fix for SF bug #425868. 2001-07-04 10:15:58 +00:00
multifile.py Code modernization. Replace v=s[i]; del s[i] with single lookup v=s.pop(i) 2002-06-30 03:39:14 +00:00
mutex.py Code modernization. Replace v=s[i]; del s[i] with single lookup v=s.pop(i) 2002-06-30 03:39:14 +00:00
netrc.py Replace boolean test with is None. 2002-06-01 16:07:16 +00:00
new.py Forgot to add this. It's part of patch 568629. 2002-06-16 01:22:13 +00:00
nntplib.py Remove uses of the string and types modules: 2002-06-03 15:58:32 +00:00
ntpath.py Replaced obsolete stat module constants with equivalent attributes 2002-06-01 19:51:15 +00:00
nturl2path.py Use string.ascii_letters instead of string.letters. 2001-07-20 18:52:02 +00:00
os.py Be consistent with the functions in the posix/nt module: docstrings 2002-07-02 21:28:04 +00:00
os2emxpath.py Replaced obsolete stat module constants with equivalent attributes 2002-06-01 19:51:15 +00:00
pdb.doc
pdb.py Fix SF bug 579701 (Fernando Pérez); an input line consisting of one or 2002-07-12 13:10:53 +00:00
pickle.py Given the persistent id code a shot at a class before calling save_global(). 2002-07-16 19:47:43 +00:00
pipes.py Patch #444359: Remove unused imports. 2001-08-02 07:15:29 +00:00
popen2.py Remove uses of the string and types modules: 2002-06-03 15:58:32 +00:00
poplib.py Replace boolean test with is None. 2002-06-01 16:07:16 +00:00
posixfile.py Add a warning to the posixfile module stating that it will go away. 2001-10-24 22:03:35 +00:00
posixpath.py Remove another reference to stat.ST_MODE 2002-06-06 18:16:14 +00:00
pprint.py Change the "__ private" names to "_ protected"; this has been a pain for 2002-07-08 12:28:06 +00:00
pre.py Fix bug #570057: Broken pre.subn() (and pre.sub()) 2002-06-27 19:59:27 +00:00
profile.doc
profile.py Replaced .keys() with dictionary iterators 2002-06-02 18:55:56 +00:00
pstats.py Replaced .keys() with dictionary iterators 2002-06-02 18:55:56 +00:00
pty.py Whitespace normalization. 2001-05-29 06:06:54 +00:00
py_compile.py Replaced obsolete stat module constants with equivalent attributes 2002-06-01 19:51:15 +00:00
pyclbr.py Remove uses of the string and types modules: 2002-06-03 15:58:32 +00:00
pydoc.py Replaced obsolete stat module constants with equivalent attributes 2002-06-01 19:51:15 +00:00
quopri.py import statements only raise ImportError, right? 2002-03-23 05:55:18 +00:00
random.py Whitespace normalized. 2002-05-23 23:58:17 +00:00
re.py Whitespace normalization. 2002-04-16 01:38:40 +00:00
reconvert.py Suppress the warning about regex here. 2001-09-04 15:18:54 +00:00
regex_syntax.py removed __all__ from several modules 2001-02-18 03:30:53 +00:00
regsub.py SF 563203. Replaced 'has_key()' with 'in'. 2002-06-01 14:18:47 +00:00
repr.py Rename "dictionary" (type and constructor) to "dict". 2001-10-29 22:25:45 +00:00
rexec.py Use code.interact(), which is even simpler, *and* imports readline 2002-06-14 13:54:26 +00:00
rfc822.py SF bug 558179. 2002-06-05 19:07:39 +00:00
rlcompleter.py Remove uses of the string and types modules: 2002-06-03 15:58:32 +00:00
robotparser.py Remove import of re, it is not used 2002-05-31 14:14:06 +00:00
sched.py bunch more __all__ lists 2001-02-15 22:15:14 +00:00
sgmllib.py Replace boolean test with is None. 2002-06-02 00:40:05 +00:00
shelve.py bunch more __all__ lists 2001-02-15 22:15:14 +00:00
shlex.py Replace boolean test with is None. 2002-06-02 00:40:05 +00:00
shutil.py Replace obsolete stat module constants with 2002-06-06 09:48:13 +00:00
site.py SF 563203. Replaced 'has_key()' with 'in'. 2002-06-01 14:18:47 +00:00
smtpd.py smtp_RCPT(): Removed a somewhat embarrassing debugging line, found by 2002-05-14 02:13:30 +00:00
smtplib.py Remove uses of the string and types modules: 2002-06-03 15:58:32 +00:00
sndhdr.py Amazing. This would open the sound file in text mode. Fixed. 2001-07-31 06:27:07 +00:00
socket.py Cleanup a little 2002-06-13 22:18:39 +00:00
sre.py added finditer sanity check 2001-10-28 20:15:40 +00:00
sre_compile.py made the code match the comments (1.5.2 compatibility) 2002-06-27 20:08:25 +00:00
sre_constants.py Added docstrings by Neal Norwitz. This closes SF bug #450980. 2001-09-04 19:10:20 +00:00
sre_parse.py Replace boolean test with is None. 2002-06-02 00:40:05 +00:00
stat.py removed __all__ from several modules 2001-02-18 03:30:53 +00:00
statcache.py Replaced obsolete stat module constants with equivalent attributes 2002-06-01 19:51:15 +00:00
statvfs.py removed __all__ from several modules 2001-02-18 03:30:53 +00:00
string.py Remove uses of the string and types modules: 2002-06-03 15:58:32 +00:00
stringold.py Nuke accurate but confusing and unhelpful comments about split vs splitfields. 2001-02-09 20:18:41 +00:00
sunau.py Whitespace normalization. 2001-01-15 01:36:40 +00:00
sunaudio.py Whitespace normalization. 2001-01-15 01:36:40 +00:00
symbol.py track addition of testlist_safe to Grammar 2001-10-17 13:13:04 +00:00
symtable.py Replaced .keys() with dictionary iterators 2002-06-02 18:55:56 +00:00
tabnanny.py Use string methods where possible, and remove import string 2002-05-31 14:13:04 +00:00
telnetlib.py Replaced boolean tests with is None. 2002-06-02 03:04:52 +00:00
tempfile.py SF 563203. Replaced 'has_key()' with 'in'. 2002-06-01 14:18:47 +00:00
textwrap.py Docstring improvements. In particular, added docstrings for the 2002-07-04 14:51:49 +00:00
this.py Whitespace cleanup. 2002-02-08 20:41:34 +00:00
threading.py Code modernization. Replace v=s[i]; del s[i] with single lookup v=s.pop(i) 2002-06-30 03:39:14 +00:00
toaiff.py SF 563203. Replaced 'has_key()' with 'in'. 2002-06-01 14:18:47 +00:00
token.py Remove redundant 'import string' (PyChecker). 2001-08-13 15:48:06 +00:00
tokenize.py Whitespace normalization. 2002-05-23 15:15:30 +00:00
traceback.py Replaced boolean tests with is None. 2002-06-02 03:04:52 +00:00
tty.py final round of __all__ lists (I hope) - skipped urllib2 because Moshe may be 2001-03-01 04:27:19 +00:00
types.py SF patch 568629 by Oren Tirosh: types made callable. 2002-06-14 20:41:17 +00:00
tzparse.py Add a deprecation warning to this module. 2001-03-20 18:36:48 +00:00
unittest.py Fix printing plural (s or ""). 2002-05-31 14:15:11 +00:00
urllib.py Fix SF #565414, FancyURLopener() needs to support **kwargs 2002-06-11 13:38:51 +00:00
urllib2.py Fix from SF patch #527518: proxy config with user+pass authentication. 2002-07-07 16:57:35 +00:00
urlparse.py amk's fix attached to 2002-03-18 13:06:00 +00:00
user.py SF 563203. Replaced 'has_key()' with 'in'. 2002-06-01 14:18:47 +00:00
uu.py Replaced obsolete stat module constants with equivalent attributes 2002-06-01 19:51:15 +00:00
warnings.py Remove uses of the string and types modules: 2002-06-03 15:58:32 +00:00
wave.py The first batch of changes recommended by the fixdiv tool. These are 2001-09-04 19:14:14 +00:00
weakref.py SF patch 564549 (Erik Andersén). 2002-06-10 20:00:52 +00:00
webbrowser.py Replaced boolean tests with is None. 2002-06-02 03:04:52 +00:00
whichdb.py SF patch #474590 -- RISC OS support 2001-10-24 20:42:55 +00:00
whrandom.py Guido sez to remove the deprecation warning for a year. 2002-04-11 20:57:30 +00:00
xdrlib.py Derive exception classes from Exception 2002-03-31 13:59:18 +00:00
xmllib.py SF 563203. Replaced 'has_key()' with 'in'. 2002-06-01 14:18:47 +00:00
xmlrpclib.py Code modernization. Replace v=s[i]; del s[i] with single lookup v=s.pop(i) 2002-06-30 03:39:14 +00:00
zipfile.py Remove uses of the string and types modules: 2002-06-03 15:58:32 +00:00