Jeff McNeil <[email protected]> added the comment:
So, I've been meaning to get more into contributing back to Python and I found
this one somewhat interesting.
As it turns out, even the following simple script raises the same warning:
[jeff@martian cpython]$ ./python -c 'import urllib.request;
urllib.request.urlretrieve("http://www.python.org")'
/home/jeff/cpython/Lib/socket.py:340: ResourceWarning: unclosed <socket.socket
object, fd=3, family=2, type=1, proto=6>
self._sock = None
[64388 refs]
[jeff@martian cpython]$
The close method of Socket.SocketIO simply sets the underlying socket object to
None, which causes that warning. Explicitly calling the close method on the
underlying socket clears that up (and it's protected by that reference counter).
The _decref_socketios just drops the internal ref count and never actually
closes -- it won't unless self.__closed is True.
So, when self._sock is set to None, that error bubbles up. As SocketIO is the
foundation used in socket.makefile, I think just adding that close call ought
to be correct.
I can do the simple patch if you agree.
----------
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue11563>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com