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
lib-tk Use string methods, remove import string 2002-05-31 20:51:31 +00:00
plat-aix3
plat-aix4
plat-atheos Patch #488073: AtheOS port. 2002-06-11 06:22:31 +00:00
plat-beos5
plat-freebsd2
plat-freebsd3
plat-freebsd4
plat-freebsd5
plat-generic
plat-irix5
plat-irix6 Regenerated for Irix 6.5. 2002-03-17 21:49:20 +00:00
plat-linux1
plat-linux2 Regenerated for Linux 2.2.4. 2001-12-22 15:23:50 +00:00
plat-netbsd1
plat-next3
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
plat-sunos5 Regenerate for Solaris 8. 2001-08-09 12:33:32 +00:00
plat-unixware7
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
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
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
UserDict.py Add pop() to UserDict. 2002-04-13 14:03:38 +00:00
UserList.py
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
commands.py
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
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
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
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
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
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
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
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
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
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
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
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
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
sgmllib.py Replace boolean test with is None. 2002-06-02 00:40:05 +00:00
shelve.py
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
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
statcache.py Replaced obsolete stat module constants with equivalent attributes 2002-06-01 19:51:15 +00:00
statvfs.py
string.py Remove uses of the string and types modules: 2002-06-03 15:58:32 +00:00
stringold.py
sunau.py
sunaudio.py
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
types.py SF patch 568629 by Oren Tirosh: types made callable. 2002-06-14 20:41:17 +00:00
tzparse.py
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