New submission from Florent Viard: In Lib/http/client.py +682 (Formerly httplib)
def fileno(self): return self.fp.fileno() This function should be modified to be able to handle the case where the http request is already completed and so "fp" is closed. Ex.: def fileno(self): if self.fp: return self.fp.fileno() else: return -1 I encountered the issue in the following context: while 1: read_list = select([req], ...)[0] if read_list: req.read(CHUNK_SIZE) ... Traceback (most recent call last): File "/usr/lib/python2.7/site-packages/nappstore/server_comm.py", line 211, in download_file ready = select.select([req], [], [], timeout)[0] File "/usr/lib/python2.7/socket.py", line 313, in fileno return self._sock.fileno() File "/usr/lib/python2.7/httplib.py", line 655, in fileno return self.fp.fileno() AttributeError: 'NoneType' object has no attribute 'fileno' For the returned value, I'm not sure because there is currently 2 different cases for other objects returning a fileno. In Lib/fileinput.py: -1 is returned in case of ValueError (no fileno value as fp was closed) but in Lib/socket.py: ValueError is raised in that case and default value for fileno for a socket is None ---------- components: Library (Lib) messages: 198902 nosy: fviard priority: normal severity: normal status: open title: AttributeError: 'NoneType' in http/client.py when using select when file descriptor is closed. type: crash versions: Python 2.6, Python 2.7, Python 3.1, Python 3.2, Python 3.3, Python 3.4, Python 3.5 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue19154> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com