More progress on stability in this release. Also cleaned up some redundant code.
This release addresses even more stability issues.
Potential Issue: The EBOOT version seems to fail when setting up the server socket, at least on my system (4.81.2 rebug)
PS3NTFS build is included here, you will need the same PS3NTFS SPRX to run this edition.
NTFS build is also included if you do not use the shared PS3NTFS plugin.
This release adds experimental multithreading support which may improve performance at the cost of stability. It has not gone through extensive testing, so it shouldn't be expected to work reliably.
Builds for Cobra SPRX and EBOOT.BIN are included.
A quick update to fix a crashing issue with NTFS. The optimizations made in version 4.3 have been rewritten a bit more carefully. No update to PS3NTFS required.
This major update is focused on increasing performance and stability. Code optimizations were made to improve efficiency overall. See the changelog for more details.
As per v4.2b, PS3NTFS is required to enable NTFS support with openps3ftp.sprx. openps3ftp_ntfs.sprx already includes PS3NTFS code. Should there be more support for the PS3NTFS plugin (such as webMAN/sMAN linking to PS3NTFS instead of libntfs), the openps3ftp_ntfs.sprx build will be dropped in future releases.
Edit: The new code optimizations seem to have an issue with PS3NTFS. Please use openps3ftp_ntfs.sprx if you require NTFS support, and disable PS3NTFS until next update.
This release adds NTFS support, and various code optimizations.
- The console will hard-lock when shutting down the console while a client is connected to the FTP server. Please disconnect before shutting down!
And to promote some of my other PS3 projects...
- This is required for NTFS functionality on openps3ftp.sprx. However, if you (for some reason) do not want to use this, there is openps3ftp_ntfs.sprx which includes the code built-in.
- There are advantages to having separate plugins for library functions - one being that any new library updates can be done just by updating the plugin itself without worrying about dependent plugins. Another advantage is that multiple plugins can share the same library code, which in the end saves RAM usage.
- Should there be any updates to libntfs, this plugin can easily be updated and all homebrews using PS3NTFS will automatically have the latest update to libntfs.
- This allows developers to extend XMB functionality through module-actions. It is in the Scene's best interest to adopt this to advance in PS3 homebrew development.
After rigorous testing, this release fixes a rare crash that occurs when disconnecting from the server. Plugin is now stable!
Fixed more crashes and the SITE command. Also fixed a (very small) memory leak when connecting and disconnecting multiple times.
Additionally, the server will minimize memory usage when it is not active.
Since services like FTP are probably better suited to run in the background, here's a VSH plugin.
The whole thing needed to be rewritten (again) in C, but it mainly follows the C++ codebase, so there's still the great stability and performance that standalone version 4.2 brings - notably the 10+ simultaneous connection stability.
Additionally, this plugin provides an interface for other VSH plugins to add their own commands! Simply link your project to the sprx stub along with the header file. Currently, this is experimental - but tested to be working. An example proof-of-concept is included. This requires the main plugin to be loaded first. The only issue is that the plugins MUST unregister their commands and be unloaded first, otherwise the console will hang on shutdown endlessly.
Since I'm still new to the SPRX game, this is being marked as pre-release or beta. Do expect crashes, but from my own testing, it works.
- openps3ftp.sprx: main FTP server plugin. Make sure other FTP daemons are disabled (or on a different port) such as webMAN.
- openps3ftp_prx_test.sprx: plugin interface tester. This injects a command called "TEST" which calls syscall 496 ( sys_prx_get_module_id_by_name) and takes in a parameter.