Commit Graph

39 Commits

Author SHA1 Message Date
Guido van Rossum 9a40c1c299 Add XXX about Winsock error values 2002-12-26 18:22:54 +00:00
Guido van Rossum e94d8fab56 Fix an old bug in poll(). When a signal is handled while we're
blocked in select(), this will raise select.error with errno set to
EINTR.  The except clauses correctly ignores this error, but the rest
of the logic will then call read() for all objects in select's *input*
list of read file descriptors.  Then when an object's read_handler()
is naive, it will call recv() on its socket, which will raise an
IOError, and then asyncore decides to close the socket.  To fix this,
we simply return in this case.

Backport candidate.
2002-11-05 18:41:20 +00:00
Thomas Heller 6d817ad43d Again, I did check in too many changes. Sorry. 2002-09-26 13:19:48 +00:00
Thomas Heller d8ce87ad84 On Windows, select() does not accept empty lists.
Patch suggested by Guido, fixes SF item 611464.

Bugfix candidate, will backport to release22-maint myself.
2002-09-24 17:30:31 +00:00
Guido van Rossum 12e9668989 Fiddle with compact_traceback().
More whitespace cleanup.
2002-09-13 14:09:26 +00:00
Guido van Rossum d560ace3a7 I don't think it's safe to use map.iteritems() in the various poll
routines.  I got some errors "dictionary changed size during
iteration" when running ZEO tests on machine while doing heavy
forground work in another window, and thinking about it, I believe
that it should be okay if readable() or writable() modifies the map.

I also finally made all the spacing conform to the Python style guide:
no space between a function/method name and the following left
parenthesis (fixed lots of occurrences), spaces around assignment
operators (fixed a few, always of the form "map=..."), and a blank
line between the class statement and the first method definition (a
few).
2002-09-12 04:57:29 +00:00
Jeremy Hylton d750036b20 A little refactoring.
Add read(), write(), and readwrite() helper functions to shorten poll
functions.  Use get() instead of try/except KeyError for lookup.
XXX How could the lookup ever fail?

Remove module-level DEBUG flag.

Use iteritems() instead of items() when walking the socket map.

Reformat the functions I touched so that are consistently Pythonic.
2002-09-08 00:14:54 +00:00
Tim Peters bc0e910826 Convert a pile of obvious "yes/no" functions to return bool. 2002-04-04 22:55:58 +00:00
Jeremy Hylton f32e459125 Replace use of apply() with extended call syntax. 2002-04-04 21:02:24 +00:00
Neal Norwitz 9672901742 Remove duplicate "import os" 2002-03-14 23:48:18 +00:00
Andrew M. Kuchling cc5f5b2686 [Bug #517554] When a signal happens during the select call in
asyncore.poll, the select fails with EINTR, which the
	code catches. However, the code fails to clear the
	r/w/e arrays (like poll3 does), which means it acts as
	if every descriptor had received all possible events.

Bug report and patch by Cesar Eduardo Barros
2002-03-08 18:19:59 +00:00
Jeremy Hylton 2a05bc72d6 Partial fix for problem in SF buf #487458
Rev 1.20 introduced a call to getpeername() in the dispatcher
constructor.  This only works for a connected socket.  Apparently
earlier versions of the code worked with un-connected sockets, e.g. a
listening socket.

It's not clear that the code is supposed to accept these sockets,
because it sets self.connected = 1 when passed a socket.  But it's
also not clear that it should be a fatal error to pass a listening
socket.

The solution, for now, is to put a try/except around the getpeername()
call and continue if it fails.  The self.addr attribute is used
primarily (only?) to produce a nice repr for the object, so it hardly
matters.  If there is a real error on a connected socket, it's likely
that subsequent calls will fail too.
2001-12-14 16:15:11 +00:00
Jeremy Hylton f24339f6f7 /F observes that we need an else: in connect() 2001-10-30 14:16:17 +00:00
Jeremy Hylton e16e54f7f1 Use connect_ex() instead of connect().
Removes old XXX comment and possible source of long-delays.
2001-10-29 16:44:37 +00:00
Jeremy Hylton fbd5797eb7 Fix for SF bug 453099 -- select not defensive
And SF patch 473223 -- infinite getattr loop

Wrap select() and poll() calls with try/except for EINTR.  If EINTR is
raised, treat as a response where no fd is ready.

In dispatcher constructor, make sure self.socket is always
initialized.
2001-10-29 16:32:19 +00:00
Martin v. Löwis 29103c7b32 Reindent __repr__. 2001-10-18 17:33:19 +00:00
Martin v. Löwis eee80ee2ef Patch #470744: Simplify __repr__ error handling. 2001-10-18 11:39:34 +00:00
Martin v. Löwis 106bdd3b80 Correct __repr__: include module name, avoid extra space for empty status,
use 0x format for id. Proposed by Cesar Eduardo Barros in patch #470680.
2001-10-12 22:39:20 +00:00
Martin v. Löwis 6ec9a36faf Patch #468647: Fix exception propagation in asyncore. 2001-10-09 10:10:33 +00:00
Andrew M. Kuchling 4602c1b702 Set .addr in a few more places (patch approved by Sam Rushing) 2001-10-03 17:07:25 +00:00
Martin v. Löwis f6cc07cffe Patch #461321: Support None as a timeout in poll2 and poll3. 2001-09-19 17:31:47 +00:00
Martin v. Löwis 1efbe425f5 Patch #460554: Properly test for tuples. 2001-09-11 15:11:27 +00:00
Tim Peters 7c005af915 Whitespace normalization. 2001-08-20 21:48:00 +00:00
Guido van Rossum bfbc18dbf9 Remove redundant assignment l = [] from poll3() -- copy-and-paste
error.
2001-08-13 15:21:55 +00:00
Jeremy Hylton a8b5f7d178 Remove hard-coded NT constants that are already defined in errno on NT.
Wrap some long lines.
Remove unnecessary tuple unpack.
2001-08-10 14:30:35 +00:00
Fred Drake 9f9b593f8d <socket>.getsockopt() and <socket>.setsockopt() can only raise socket.error,
so only catch that specific exception.
2001-05-11 18:28:54 +00:00
Fred Drake a94414a287 Remove all remaining uses of the FCNTL module from the standard library. 2001-05-10 15:33:31 +00:00
Tim Peters 8ae2df483c Whitespace normalization. 2001-05-02 05:54:44 +00:00
Jeremy Hylton 12e73bb2f0 dispatcher.__repr__() was unprepared to handle the address for a Unix
domain socket.  Fix that and make the error message for failures a
little more helpful by including the class name.
2001-04-20 19:04:55 +00:00
Eric S. Raymond b49f4a4b15 String method conversion. 2001-02-09 05:07:04 +00:00
Andrew M. Kuchling af6963c2f0 Updated version of asyncore.py from Sam Rushing:
Adds support for using select.poll() if it's available

    Move a 'map is None' test out of an else branch and into the right place
2001-01-24 15:50:19 +00:00
Tim Peters 146965abf2 Whitespace standardization. 2001-01-14 18:09:23 +00:00
Fred Drake 526a18235a Untabify. When compiling in -tt mode, an inconsistent Tab use error
was raised.  This occurred during installation.
2000-09-11 04:00:46 +00:00
Andrew M. Kuchling da85a272a6 Match Sam Rushing's current version of asyncore.py and asynchat.py
(SF patch 101447, fixing PR#113704)
2000-09-08 20:30:39 +00:00
Guido van Rossum 2341794667 Fix a couple broken append() calls, spotted by Tim. 2000-02-25 11:48:42 +00:00
Guido van Rossum 4b8c6eaf8b Actually, the previous batch's comment should have been different;
*this* set of patches is Ka-Ping's final sweep:

The attached patches update the standard library so that all modules
have docstrings beginning with one-line summaries.

A new docstring was added to formatter.  The docstring for os.py
was updated to mention nt, os2, ce in addition to posix, dos, mac.
2000-02-04 15:39:30 +00:00
Guido van Rossum c2b6de5b91 Put Sam Rushing's original RCS ID string back, without dollars around it. 1999-09-14 20:16:00 +00:00
Guido van Rossum a8d0f4fd2d Sam's latest versions 1999-06-08 13:20:05 +00:00
Guido van Rossum 0039d7b4e6 A gift from Sam Rushing - modules asyncore and asynchat for the
standard Python library.  (Async socket support.)
1999-01-12 20:19:27 +00:00