Skip to content

Commit e6d5515

Browse files
committed
Spam a lot more gc and reduce default file cache to use only 4kb ram
1 parent 6a8df6a commit e6d5515

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

src/ftp_server.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ def __init__(
4343
ip,
4444
port=21,
4545
authlist={},
46-
maxcache=5,
46+
maxcache=2,
4747
maxbuf=2880,
4848
auth_timeout=120,
4949
verbose=False,
@@ -273,6 +273,10 @@ def poll(self) -> bool:
273273
if self.verbose:
274274
print("Done with command.")
275275
del command, data
276+
collect()
277+
collect()
278+
collect()
279+
collect()
276280
del raw, cmds
277281
except UnicodeError:
278282
pass
@@ -386,6 +390,8 @@ def _retr(self, data) -> None:
386390
with open(filen, "r" if self.mode else "rb") as f:
387391
self._send_msg(17)
388392
while True:
393+
collect()
394+
collect()
389395
dat = f.read(self.tx_size) # Reading in chunks
390396
if not dat:
391397
del dat
@@ -399,8 +405,6 @@ def _retr(self, data) -> None:
399405
except OSError:
400406
self._send_msg(18)
401407
self._disable_data()
402-
collect()
403-
collect()
404408

405409
def _stor(self, data, append=False) -> None:
406410
if not self._authcheck():
@@ -429,6 +433,7 @@ def _stor(self, data, append=False) -> None:
429433
f.write(bytes(memoryview(self._file_cache)[:cache_stored]))
430434
cache_stored = 0
431435
collect()
436+
collect()
432437
self._file_cache[cache_stored:size] = memoryview(self._rx_buf)[
433438
:size
434439
]
@@ -441,15 +446,15 @@ def _stor(self, data, append=False) -> None:
441446
if cache_stored:
442447
f.write(bytes(memoryview(self._file_cache)[:cache_stored]))
443448
collect()
449+
collect()
444450
self._send_msg(19)
445451
remount("/", True)
446452
except RuntimeError:
447453
self._send_msg(20)
448454
except OSError: # Append failed
449455
self._send_msg(18)
450456
self._disable_data()
451-
collect()
452-
collect()
457+
453458

454459
def _type(self, data) -> None:
455460
if not self._authcheck():

0 commit comments

Comments
 (0)