Yury Selivanov
Yury Selivanov
You should be using `transport.write_eof()`.
Well, there's no API for `SHUT_RD` in libuv, so uvloop can't support it in any way :( Why do you need `SHUT_RD`? It's not a coincidence it's not supported directly...
OK, fair enough. The reason why `transport.get_extra_info('socket')` does not return a real socket object is because manipulating the socket FD without the loop knowing about it can disrupt the operation...
Meanwhile you can try this (untested): ```python tr_sock = transport.get_extra_info('socket') sock = socket.socket(tr_sock.family, tr_sock.type, tr_sock.proto, tr_sock.fileno()) try: sock.shutdown(socket.SHUT_RD) finally: sock.detach() ```
@asvetlov Any ideas what might be going on here? I'm wondering why the behaviour of `aiohttp.Timeout` might be different on vanilla vs uvloop
@dark0ghost would really help if you could give us a single Python file that reproduces the bug along with clear instructions how to run it.
@fantix I see you self-assigned this. Should the fix be prioritized?
Not right now, but doable in principle. We just need to allow users to provide a handler for SIGCHLD while making sure that libuv receives it too.
> vanilla asyncio: the underlying socket is available in transport._sock for consenting coders aware of the risks using "private" members This won't be the case soon, as asyncio adopts the...
> @1st1, have you planned to fix this? Yes. Will take a look in a week or two. If you have time to make a PR I'll review it.