From 38dacf2b97781e62e55eea75302f7133ee211f7a Mon Sep 17 00:00:00 2001 From: Stefan Allius Date: Tue, 3 Oct 2023 11:43:08 +0200 Subject: [PATCH] Revert "use weakrefs to solve circular references" This reverts commit dfe8bcb01e5cc08129658aa331b93e094a08d218. --- app/src/proxy.py | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/app/src/proxy.py b/app/src/proxy.py index ff7e6b8..eeadb55 100644 --- a/app/src/proxy.py +++ b/app/src/proxy.py @@ -1,33 +1,34 @@ -import asyncio, logging, traceback, weakref +import asyncio, logging, traceback from async_stream import AsyncStream class Proxy: def __init__ (proxy, reader, writer, addr): - proxy.__ServerStream = AsyncStream(proxy, reader, writer, addr) - proxy.__ClientStream = None + proxy.ServerStream = AsyncStream(proxy, reader, writer, addr) + proxy.ClientStream = None async def server_loop(proxy, addr): logging.info(f'Accept connection from {addr}') - await proxy.__ServerStream.loop() - logging.info(f'Stopped server connection loop {addr}') + await proxy.ServerStream.loop() + logging.info(f'Close server connection {addr}') - if proxy.__ClientStream: - logging.debug ("disconnect client connection") - proxy.__ClientStream.disc() + if proxy.ClientStream: + logging.debug ("close client connection") + proxy.ClientStream.close() async def client_loop(proxy, addr): - await proxy.__ClientStream.loop() - logging.info(f'Stopped client connection loop {addr}') - proxy.__ClientStream = None + await proxy.ClientStream.loop() + logging.info(f'Close client connection {addr}') + proxy.ServerStream.remoteStream = None + proxy.ClientStream = None - async def CreateClientStream (proxy, host, port): + async def CreateClientStream (proxy, stream, host, port): addr = (host, port) try: logging.info(f'Connected to {addr}') connect = asyncio.open_connection(host, port) reader, writer = await connect - proxy.__ClientStream = AsyncStream(proxy, reader, writer, addr, weakref.ref(proxy.__ServerStream), server_side=False) + proxy.ClientStream = AsyncStream(proxy, reader, writer, addr, stream, server_side=False) asyncio.create_task(proxy.client_loop(addr)) except ConnectionRefusedError as error: @@ -36,7 +37,7 @@ class Proxy: logging.error( f"Proxy: Exception for {addr}:\n" f"{traceback.format_exc()}") - return weakref.ref(proxy.__ClientStream) + return proxy.ClientStream def __del__ (proxy): - logging.info ("Proxy __del__") \ No newline at end of file + logging.debug ("Proxy __del__") \ No newline at end of file