[Python-bugs-list] [ python-Bugs-528295 ] asyncore unhandled write event

noreply@sourceforge.net noreply@sourceforge.net
Sat, 16 Mar 2002 12:36:52 -0800


Bugs item #528295, was opened at 2002-03-10 19:34
You can respond by visiting: 
http://sourceforge.net/tracker/?func=detail&atid=105470&aid=528295&group_id=5470

Category: Python Library
Group: Python 2.2
Status: Open
Resolution: None
Priority: 5
Submitted By: Carl J. Nobile (cnobile)
>Assigned to: A.M. Kuchling (akuchling)
Summary: asyncore unhandled write event

Initial Comment:
I'm getting an unhandled write event on a handle_accept
callback in asyncore.dispatch. This worked fine in
python-2.1.1, but now seems to be broken in python-2.2.

This happens when I send a SIGHUP to reread my config
file. The signal lets me break out of the
asyncore.loop() to reread the configuration and restart
the server. The self.accept() method returns a TypeNone
instead of the expected tuple when it is called in
handle_accept.

I've written a database key server which is a fairly
large package and is dependent on a few other packages,
so sending the code would not be too easy. If I can
duplicate the problem in a few lines of code I will
send it along at a later date.

Thanks for your attention.

Carl

----------------------------------------------------------------------

>Comment By: A.M. Kuchling (akuchling)
Date: 2002-03-16 15:36

Message:
Logged In: YES 
user_id=11375

The asyncore.py in 2.1.1 seems to be revision 1.10 of 
the file; it's rev. 1.28 in 2.2 and is now at 1.30, so 
there have been a number of changes to asyncore, though 
none seem relevant.  Did you try your code on 2.2 with 
the 2.1.1
asyncore?  That would let us figure out if it's due to 
a change in asyncore or the underlying socket or select
module.

(Actually, another thing to check is whether the select 
or the poll module is being used; maybe that changed 
for you between 2.1.1 and 2.2.)



----------------------------------------------------------------------

Comment By: Carl J. Nobile (cnobile)
Date: 2002-03-14 21:52

Message:
Logged In: YES 
user_id=482117

My question then is why didn't it do this when I ran my app
with python 2.1.1. Something has changed in 2.2 and I don't
think it was asyncore, I do know some work was done to the
low level socket and select modules so they could handle
IPV6. I understand why the None is being returned, but an
accept shouldn't even be called on a write event coming from
a select or poll.

----------------------------------------------------------------------

Comment By: A.M. Kuchling (akuchling)
Date: 2002-03-14 18:24

Message:
Logged In: YES 
user_id=11375

Looking at the implementation of accept() in asyncore.py, it will 
return 
None when the socket is in non-blocking mode and the accept() would block.  
There's really nothing else accept() could
return in this case, so you'll 
probably have to write your code to 
handle this case.



----------------------------------------------------------------------

You can respond by visiting: 
http://sourceforge.net/tracker/?func=detail&atid=105470&aid=528295&group_id=5470