Hi,

I'm trying Trollius on Windows. I have an issue with  the test:
test_events.ProactorEventLoopTests.test_create_server_sock()

It raises a socket.error(WSAENOTSOCK).

Scenario:
-------
(1)
- create an event loop (windows proactor)
- create a listening socket
- serve on this socket
- IocpProactor creates an overlapped operation (*) and then creates a
future connected to this overlapped

(2)
- connect a client to the socket
- The overlapped operation (*) is awaken
- client send data
- client closes its socket

(3)
- close the server

(4)
- run the loop
- the future of the overlapped operation (*) is awaken, even if the
client socket is already closed
- the future raises an error because it tries to accept on a closed socket
-------

I didn't understand who is responsible of accepting the socket
(proactor, the event loop, the server?).

The future of the overlapped operation (*) should be cancelled at step
(3). Who should cancel it? Proactor, the event loop or the server?

Trollius uses currently a workaround for this issue: run briefly the
event loop... because this workaround logs an error with the select
event loop (which is correct, an exception is not catched).

Victor

Reply via email to