diff options
Diffstat (limited to 'src/waitress/wasyncore.py')
-rw-r--r-- | src/waitress/wasyncore.py | 66 |
1 files changed, 32 insertions, 34 deletions
diff --git a/src/waitress/wasyncore.py b/src/waitress/wasyncore.py index 09bcafa..9a68c51 100644 --- a/src/waitress/wasyncore.py +++ b/src/waitress/wasyncore.py @@ -51,33 +51,31 @@ in the stdlib will be dropped soon. It is neither a copy of the 2.7 asyncore nor the 3.X asyncore; it is a version compatible with either 2.7 or 3.X. """ -from . import compat -from . import utilities - -import logging -import select -import socket -import sys -import time -import warnings - -import os from errno import ( + EAGAIN, EALREADY, - EINPROGRESS, - EWOULDBLOCK, + EBADF, + ECONNABORTED, ECONNRESET, + EINPROGRESS, + EINTR, EINVAL, - ENOTCONN, - ESHUTDOWN, EISCONN, - EBADF, - ECONNABORTED, + ENOTCONN, EPIPE, - EAGAIN, - EINTR, + ESHUTDOWN, + EWOULDBLOCK, errorcode, ) +import logging +import os +import select +import socket +import sys +import time +import warnings + +from . import compat, utilities _DISCONNECTED = frozenset({ECONNRESET, ENOTCONN, ESHUTDOWN, ECONNABORTED, EPIPE, EBADF}) @@ -138,7 +136,7 @@ def readwrite(obj, flags): obj.handle_expt_event() if flags & (select.POLLHUP | select.POLLERR | select.POLLNVAL): obj.handle_close() - except socket.error as e: + except OSError as e: if e.args[0] not in _DISCONNECTED: obj.handle_error() else: @@ -172,7 +170,7 @@ def poll(timeout=0.0, map=None): try: r, w, e = select.select(r, w, e, timeout) - except select.error as err: + except OSError as err: if err.args[0] != EINTR: raise else: @@ -218,7 +216,7 @@ def poll2(timeout=0.0, map=None): try: r = pollster.poll(timeout) - except select.error as err: + except OSError as err: if err.args[0] != EINTR: raise r = [] @@ -305,7 +303,7 @@ class dispatcher: # passed be connected. try: self.addr = sock.getpeername() - except socket.error as err: + except OSError as err: if err.args[0] in (ENOTCONN, EINVAL): # To handle the case where we got an unconnected # socket. @@ -320,7 +318,7 @@ class dispatcher: self.socket = None def __repr__(self): - status = [self.__class__.__module__ + "." + compat.qualname(self.__class__)] + status = [self.__class__.__module__ + "." + self.__class__.__qualname__] if self.accepting and self.addr: status.append("listening") elif self.connected: @@ -368,7 +366,7 @@ class dispatcher: socket.SO_REUSEADDR, self.socket.getsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR) | 1, ) - except socket.error: + except OSError: pass # ================================================== @@ -412,7 +410,7 @@ class dispatcher: self.addr = address self.handle_connect_event() else: - raise socket.error(err, errorcode[err]) + raise OSError(err, errorcode[err]) def accept(self): # XXX can return either an address pair or None @@ -420,7 +418,7 @@ class dispatcher: conn, addr = self.socket.accept() except TypeError: return None - except socket.error as why: + except OSError as why: if why.args[0] in (EWOULDBLOCK, ECONNABORTED, EAGAIN): return None else: @@ -432,7 +430,7 @@ class dispatcher: try: result = self.socket.send(data) return result - except socket.error as why: + except OSError as why: if why.args[0] == EWOULDBLOCK: return 0 elif why.args[0] in _DISCONNECTED: @@ -451,7 +449,7 @@ class dispatcher: return b"" else: return data - except socket.error as why: + except OSError as why: # winsock sometimes raises ENOTCONN if why.args[0] in _DISCONNECTED: self.handle_close() @@ -467,7 +465,7 @@ class dispatcher: if self.socket is not None: try: self.socket.close() - except socket.error as why: + except OSError as why: if why.args[0] not in (ENOTCONN, EBADF): raise @@ -501,7 +499,7 @@ class dispatcher: def handle_connect_event(self): err = self.socket.getsockopt(socket.SOL_SOCKET, socket.SO_ERROR) if err != 0: - raise socket.error(err, _strerror(err)) + raise OSError(err, _strerror(err)) self.handle_connect() self.connected = True self.connecting = False @@ -608,7 +606,7 @@ def close_all(map=None, ignore_all=False): for x in list(map.values()): # list() FBO py3 try: x.close() - except socket.error as x: + except OSError as x: if x.args[0] == EBADF: pass elif not ignore_all: @@ -646,7 +644,7 @@ if os.name == "posix": def __del__(self): if self.fd >= 0: - warnings.warn("unclosed file %r" % self, compat.ResourceWarning) + warnings.warn("unclosed file %r" % self, ResourceWarning) self.close() def recv(self, *args): @@ -685,7 +683,7 @@ if os.name == "posix": pass self.set_file(fd) # set it to non-blocking mode - compat.set_nonblocking(fd) + os.set_blocking(fd, False) def set_file(self, fd): self.socket = file_wrapper(fd) |