This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author giampaolo.rodola
Recipients giampaolo.rodola
Date 2007-12-02.17:54:16
SpamBayes Score 0.033013485
Marked as misclassified No
Message-id <1196618056.9.0.300104478176.issue1541@psf.upfronthosting.co.za>
In-reply-to
Content
asyncore's module readwrite() function, used when invoking
asyncore.loop(use_poll=1), erroneously calls handle_read_event() when
receiving OOB (Out Of Band) data. handle_expt_event() should be called
instead.
The patch in attachment does that.


In addition I strongly think that POLLERR, POLLHUP and POLLNVAL events
handling is incorrect too.
As far as I read from here:
http://www.squarebox.co.uk/cgi-squarebox/manServer/usr/share/man/man0p/poll.h.0p
...they refers to the following events:

POLLERR 	An error has occurred (revents only).
POLLHUP 	Device has been disconnected ( revents only).
POLLNVAL	Invalid fd member (revents only).

They are actually associated to handle_expt_event() and this is
incorrect since it should be called only when receiving OOB data.

        if flags & (select.POLLERR | select.POLLHUP | select.POLLNVAL):
            obj.handle_expt_event()

I'm not sure what should be called instead, if handle_read_event or
handle_read or handle_error.

I tried to take a look at how Twisted manages the thing but it seems
that OOB is not even supported.
Maybe someone with more experience in using select.poll could clarify that.
Files
File name Uploaded
asyncore.diff giampaolo.rodola, 2007-12-02.17:54:16
History
Date User Action Args
2007-12-02 17:54:17giampaolo.rodolasetspambayes_score: 0.0330135 -> 0.033013485
recipients: + giampaolo.rodola
2007-12-02 17:54:16giampaolo.rodolasetspambayes_score: 0.0330135 -> 0.0330135
messageid: <1196618056.9.0.300104478176.issue1541@psf.upfronthosting.co.za>
2007-12-02 17:54:16giampaolo.rodolalinkissue1541 messages
2007-12-02 17:54:16giampaolo.rodolacreate