From 4dd5429cf87b8d1c565309a7c05f6ea016f0aa71 Mon Sep 17 00:00:00 2001 From: wallefan Date: Fri, 22 Dec 2017 08:40:04 -0800 Subject: [PATCH 1/4] Update selector_events.py --- Lib/asyncio/selector_events.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Lib/asyncio/selector_events.py b/Lib/asyncio/selector_events.py index 9dbe550b01774a..33aea139ec4dd4 100644 --- a/Lib/asyncio/selector_events.py +++ b/Lib/asyncio/selector_events.py @@ -351,7 +351,7 @@ def remove_writer(self, fd): self._ensure_fd_no_transport(fd) return self._remove_writer(fd) - def sock_recv(self, sock, n): + def sock_recv(self, sock, n, flags=0): """Receive data from the socket. The return value is a bytes object representing the data received. @@ -363,10 +363,10 @@ def sock_recv(self, sock, n): if self._debug and sock.gettimeout() != 0: raise ValueError("the socket must be non-blocking") fut = self.create_future() - self._sock_recv(fut, False, sock, n) + self._sock_recv(fut, False, sock, n, flags) return fut - def _sock_recv(self, fut, registered, sock, n): + def _sock_recv(self, fut, registered, sock, n, flags=0): # _sock_recv() can add itself as an I/O callback if the operation can't # be done immediately. Don't use it directly, call sock_recv(). fd = sock.fileno() @@ -379,15 +379,15 @@ def _sock_recv(self, fut, registered, sock, n): if fut.cancelled(): return try: - data = sock.recv(n) + data = sock.recv(n, flags) except (BlockingIOError, InterruptedError): - self.add_reader(fd, self._sock_recv, fut, True, sock, n) + self.add_reader(fd, self._sock_recv, fut, True, sock, n, flags) except Exception as exc: fut.set_exception(exc) else: fut.set_result(data) - def sock_sendall(self, sock, data): + def sock_sendall(self, sock, data, flags=0): """Send data to the socket. The socket must be connected to a remote socket. This method continues @@ -402,12 +402,12 @@ def sock_sendall(self, sock, data): raise ValueError("the socket must be non-blocking") fut = self.create_future() if data: - self._sock_sendall(fut, False, sock, data) + self._sock_sendall(fut, False, sock, data, flags) else: fut.set_result(None) return fut - def _sock_sendall(self, fut, registered, sock, data): + def _sock_sendall(self, fut, registered, sock, data, flags=0): fd = sock.fileno() if registered: @@ -416,7 +416,7 @@ def _sock_sendall(self, fut, registered, sock, data): return try: - n = sock.send(data) + n = sock.send(data, flags) except (BlockingIOError, InterruptedError): n = 0 except Exception as exc: From 302151b2f944cb8dae385e448931d9695981fb1a Mon Sep 17 00:00:00 2001 From: wallefan Date: Fri, 22 Dec 2017 08:46:14 -0800 Subject: [PATCH 2/4] Update events.py --- Lib/asyncio/events.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Lib/asyncio/events.py b/Lib/asyncio/events.py index e85634e588f5a5..a6d7e1b408fce9 100644 --- a/Lib/asyncio/events.py +++ b/Lib/asyncio/events.py @@ -463,10 +463,10 @@ def remove_writer(self, fd): # Completion based I/O methods returning Futures. - def sock_recv(self, sock, nbytes): + def sock_recv(self, sock, nbytes, flags=0): raise NotImplementedError - def sock_sendall(self, sock, data): + def sock_sendall(self, sock, data, flags=0): raise NotImplementedError def sock_connect(self, sock, address): From daa78490df0dbe4ba080750baba33c9571ad0965 Mon Sep 17 00:00:00 2001 From: wallefan Date: Fri, 22 Dec 2017 08:53:49 -0800 Subject: [PATCH 3/4] Should I undo the changes made to this file then do them again? Git is so confusing... --- Lib/asyncio/proactor_events.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Lib/asyncio/proactor_events.py b/Lib/asyncio/proactor_events.py index b999c73ee34e77..ff12877fae2f23 100644 --- a/Lib/asyncio/proactor_events.py +++ b/Lib/asyncio/proactor_events.py @@ -440,11 +440,11 @@ def close(self): # Close the event loop super().close() - def sock_recv(self, sock, n, flags=0): - return self._proactor.recv(sock, n, flags) + def sock_recv(self, sock, n): + return self._proactor.recv(sock, n) - def sock_sendall(self, sock, data, flags=0): - return self._proactor.send(sock, data, flags) + def sock_sendall(self, sock, data): + return self._proactor.send(sock, data) def sock_connect(self, sock, address): return self._proactor.connect(sock, address) From 0baa164099e7cefec06cae1d9521d701a2ff7d11 Mon Sep 17 00:00:00 2001 From: wallefan Date: Fri, 22 Dec 2017 08:54:22 -0800 Subject: [PATCH 4/4] Update proactor_events.py --- Lib/asyncio/proactor_events.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Lib/asyncio/proactor_events.py b/Lib/asyncio/proactor_events.py index ff12877fae2f23..b999c73ee34e77 100644 --- a/Lib/asyncio/proactor_events.py +++ b/Lib/asyncio/proactor_events.py @@ -440,11 +440,11 @@ def close(self): # Close the event loop super().close() - def sock_recv(self, sock, n): - return self._proactor.recv(sock, n) + def sock_recv(self, sock, n, flags=0): + return self._proactor.recv(sock, n, flags) - def sock_sendall(self, sock, data): - return self._proactor.send(sock, data) + def sock_sendall(self, sock, data, flags=0): + return self._proactor.send(sock, data, flags) def sock_connect(self, sock, address): return self._proactor.connect(sock, address)