@@ -255,17 +255,17 @@ def onhostlist(hostlist):
255
255
fw .sethostip (name , ip )
256
256
mux .got_host_list = onhostlist
257
257
258
- def onaccept ():
258
+ def onaccept (listener_sock ):
259
259
global _extra_fd
260
260
try :
261
- sock ,srcip = listener .accept ()
261
+ sock ,srcip = listener_sock .accept ()
262
262
except socket .error , e :
263
263
if e .args [0 ] in [errno .EMFILE , errno .ENFILE ]:
264
264
debug1 ('Rejected incoming connection: too many open files!\n ' )
265
265
# free up an fd so we can eat the connection
266
266
os .close (_extra_fd )
267
267
try :
268
- sock ,srcip = listener .accept ()
268
+ sock ,srcip = listener_sock .accept ()
269
269
sock .close ()
270
270
finally :
271
271
_extra_fd = os .open ('/dev/null' , os .O_RDONLY )
@@ -287,7 +287,7 @@ def onaccept():
287
287
mux .send (chan , ssnet .CMD_CONNECT , '%s,%s' % dstip )
288
288
outwrap = MuxWrapper (mux , chan )
289
289
handlers .append (Proxy (SockWrapper (sock , sock ), outwrap ))
290
- handlers .append (Handler ([listener ], onaccept ))
290
+ handlers .append (Handler ([listener ], lambda : onaccept ( listener ) ))
291
291
292
292
dnsreqs = {}
293
293
def dns_done (chan , data ):
@@ -297,8 +297,8 @@ def dns_done(chan, data):
297
297
del dnsreqs [chan ]
298
298
debug3 ('doing sendto %r\n ' % (peer ,))
299
299
dnslistener .sendto (data , peer )
300
- def ondns ():
301
- pkt ,peer = dnslistener .recvfrom (4096 )
300
+ def ondns (listener_sock ):
301
+ pkt ,peer = listener_sock .recvfrom (4096 )
302
302
now = time .time ()
303
303
if pkt :
304
304
debug1 ('DNS request from %r: %d bytes\n ' % (peer , len (pkt )))
@@ -311,7 +311,7 @@ def ondns():
311
311
del dnsreqs [chan ]
312
312
debug3 ('Remaining DNS requests: %d\n ' % len (dnsreqs ))
313
313
if dnslistener :
314
- handlers .append (Handler ([dnslistener ], ondns ))
314
+ handlers .append (Handler ([dnslistener ], lambda : ondns ( dnslistener ) ))
315
315
316
316
if seed_hosts != None :
317
317
debug1 ('seed_hosts: %r\n ' % seed_hosts )
0 commit comments