The libssh organization participated in the Google Google Summer of Code (GSoC) program for the second time this year. As our team is small, we only accepted two students this year, Ahsen Kamal and Eshan Kelkar. In the following paragraphs, we will summarize their projects and results.
OpenSSH connection multiplexing
The first project for OpenSSH connection multiplexing was implemented by Ahsen Kamal. This functionality should improve integration of the libssh tools with existing OpenSSH applications. As a result, we should get better performance of repeated connections for applications built with libssh. The project covered the following milestones:
- Parsing of existing OpenSSH configuration options;
- functionality to connect to existing OpenSSH mux server;
- possibility to set up mux server for other clients to connect to.
Ahsen learned a lot about SSH protocol itself, libssh internals and testing. His current work is summarized in this article and in merge requests  and . At the time of final evaluation, the mux server implementation in  was still in progress.
We still need to work on finalizing the implementation and make sure it is well tested before we will be able to ship this in a stable release.
Async SFTP Client
The second project for asynchronous SFTP client was implemented by Eshan Kelkar. This was a long-awaited functionality as we had many users asking us for higher-performance SFTP transfers, which are not possible with synchronous messaging. The existing API was also under-documented.
Eshan spent a lot of time investigating existing SFTP API and proposed several improvements at various stages that lead to better code, making sure that there is no need to type casts, the API is ready for the non-blocking operations, we avoid needless copying of data between buffer layers and the API is easy to use. Additionally, Eshan wrote a very nice tutorial describing how to use the new API, which will be part of the tutorial we provide on our website. For more information, see the links to his blog post and merge requests  and .
The next steps here after releasing the new version of libssh would be to use this new API in applications, such as KIO sftp or curl who are some of our SFTP users.
During this summer, we worked with two students to complete two interesting projects that could be useful for our libssh users. The journey is not yet complete and the features are not yet released, but we plan to wrap them up soon. If you found this work interesting and have some comments or ideas for next projects or if you would like to help in the future, let us know.
With this post, I would like to thank our students for participating in this program, Sahana and Norbert helping with the mentoring, the libssh community for providing feedback and ideas and last but not least Google for running this program!