i've released version 1.0.0, many changes and features added, mainly specific to the switch:
- added OPTS cmd, allows clients to support UTF8.
- replace sscanf with snprintf / strtoull.
- added session timeout, can be set in config.ini.
- make all sockets non-blocking. previously, accept and connect could block.
- remove virtual decive code from ftp server, instead, have the vfs backend handle any virtual devices.
- fix PORT polling.
- [Unistd] fix socket closing, see commit for details.
- [Nx] sysmod is 3x faster (10MiB read, 6MiB write).
- [Nx] option to set different port for app/sysmod in config.ini.
- [Nx] added save listing / mounting.
- [Nx] fix sysmod sockets running out of memory, causing a hang.
- [Nx] led now flashes during data transfer.
- [Nx] close the log file on exit in app version.
- [Nx] added content storage mounting.
- [Nx] added gamecard mounting, allows you to dump cert, ticket and ncas.
- [Nx] added bis storage file support.
- [Nx] added hdd mounting, only available in app version.
- [Nx] app romfs mounting, if launched via title override (holding R), you can mount the romfs of the current title, only available in app version.
- [Nx] qlaunch (home menu) romfs mounting, only available in app version.
- [Nx] offers saves as zip files.
ftpsrv-sysmod uses a lot more memory than the last version. if you ever want to check how much memory a system uses, you can use hactool.
`hactool -t pfs0 exefs.nsp --outdir out` and finally `hactool -t nso out/main`.
this will print the section sizes, text being code, bss being static memory etc.
the last value printed in hactool is the total size used for the sysmod (code + memory).
for example, sys-ftpd:
NSO0:
Build Id: 901BDB59F8548B5A3E06C31ED96610FB64298F54000000000000000000000000
Sections:
.text: 00000000-00033000
.rodata: 00033000-00044000
.rwdata: 00044000-00049000
.bss: 00049000-000fa000
and ftpsrv:
NSO0:
Build Id: 8A929DF7352A88C63E844544B7975A38F3AA37A1000000000000000000000000
Sections:
.text: 00000000-00028000
.rodata: 00028000-00032000
.rwdata: 00032000-00036000
.bss: 00036000-00094000
these values are in hex, so ftpsrv uses 592kib of memory. this is quite a lot more than the previous release, however it
was needed to prevent random freezes due to the sockets running out of memory. it should be stable now. the stress test has
been using rclone + filezilla syncing 1k large/small files.
https://github.com/ITotalJustice/ftpsrv/releases/tag/1.0.0