@@ -107,8 +107,9 @@ def proxy_data(self, data: bytes) -> None:
107107
108108class DownstreamProtocol (_Base ):
109109
110- __slots__ = ['loop' , 'dnsbl' , 'upstream' , 'id' , '_dnsbl_task' , '_waiting' ,
111- '_waiting_closed' , '_upstream' , '_upstream_factory' ]
110+ __slots__ = ['loop' , 'dnsbl' , 'upstream' , 'id' , '_waiting' ,
111+ '_waiting_closed' , '_upstream' , '_upstream_factory' ,
112+ '_dnsbl_task' , '_connect_task' ]
112113
113114 def __init__ (self , upstream_protocol : Type [UpstreamProtocol ],
114115 loop : AbstractEventLoop , buf_len : int , dnsbl : Dnsbl ,
@@ -119,6 +120,7 @@ def __init__(self, upstream_protocol: Type[UpstreamProtocol],
119120 self .upstream : Final = upstream
120121 self .id : Final = uuid4 ().bytes
121122 self ._dnsbl_task : Optional [Task [Optional [str ]]] = None
123+ self ._connect_task : Optional [Task [_Connect ]] = None
122124 self ._waiting : Deque [bytes ] = deque ()
123125 self ._waiting_closed = False
124126 self ._upstream : Optional [UpstreamProtocol ] = None
@@ -128,6 +130,8 @@ def __init__(self, upstream_protocol: Type[UpstreamProtocol],
128130 def _set_client (self , result : ProxyResult ,
129131 connect_task : Task [_Connect ]) -> None :
130132 dnsbl_task = self ._dnsbl_task
133+ self ._dnsbl_task = None
134+ self ._connect_task = None
131135 assert dnsbl_task is not None
132136 try :
133137 _ , upstream = connect_task .result ()
@@ -157,7 +161,7 @@ def connection_made(self, transport: BaseTransport) -> None:
157161 self .id .hex (), self .sock_info )
158162 loop = self .loop
159163 self ._dnsbl_task = loop .create_task (self .dnsbl .lookup (self .sock_info ))
160- connect_task = loop .create_task (
164+ self . _connect_task = connect_task = loop .create_task (
161165 loop .create_connection (self ._upstream_factory ,
162166 self .upstream .host , self .upstream .port or 0 ,
163167 ssl = self .upstream .ssl ))
0 commit comments