115 строки
3.9 KiB
Plaintext
115 строки
3.9 KiB
Plaintext
Things TODO
|
|
===========
|
|
|
|
* Fix the numerous malloc+copy operations for sending data, see below for
|
|
details
|
|
|
|
* make sure the windowing code adapts better to slow situations so that it
|
|
doesn't then use as much memory as today. Possibly by an app-controllable
|
|
"Window mode"?
|
|
|
|
* Introduce a function that can free data that is returned allocated from the
|
|
lib, like when libssh2_session_last_error() is asked to return the string
|
|
with 'want_buf' set to non-zero.
|
|
|
|
* Add more info to the man pages.
|
|
|
|
* Decrease the number of mallocs. Everywhere. Will get easier once the
|
|
buffering improvements have been done.
|
|
|
|
* Use SO_NOSIGPIPE for Mac OS/BSD systems where MSG_NOSIGNAL doesn't
|
|
exist/work
|
|
|
|
* Extend the test suite to actually test lots of aspects of libssh2
|
|
|
|
* Fix all compiler warnings (some can't be done without API changes)
|
|
|
|
* Expose error messages sent by the server
|
|
|
|
* Make SFTP transfers ask for and send several packages at once so that it
|
|
doesn't have to send-waitforack-send-waitforack as much.
|
|
|
|
At next SONAME bump
|
|
===================
|
|
|
|
* stop using #defined macros as part of the official API. The macros should
|
|
either be turned into real functions or discarded from the API.
|
|
|
|
* fix the parts of the API where object pointers and function pointers are
|
|
mixed like libssh2_session_callback_set()
|
|
|
|
* remove the following functions from the API/ABI
|
|
|
|
libssh2_base64_decode()
|
|
libssh2_session_flag()
|
|
libssh2_channel_handle_extended_data()
|
|
libssh2_channel_receive_window_adjust()
|
|
libssh2_poll()
|
|
libssh2_poll_channel_read()
|
|
libssh2_session_startup() (libssh2_session_handshake() is the replacement)
|
|
|
|
* Rename a few function:
|
|
|
|
libssh2_hostkey_hash => libssh2_session_hostkey_hash
|
|
libssh2_banner_set => libssh2_session_banner_set
|
|
|
|
* change 'int' to 'libssh2_socket_t' in the public API for sockets.
|
|
|
|
* Use 'size_t' for string lengths in all functions.
|
|
|
|
* Add a comment field to struct libssh2_knownhost.
|
|
|
|
* remove the existing libssh2_knownhost_add() function and rename
|
|
libssh2_knownhost_addc to become the new libssh2_knownhost_add instead
|
|
|
|
* remove the existing libssh2_scp_send_ex() function and rename
|
|
libssh2_scp_send64 to become the new libssh2_scp_send instead.
|
|
|
|
* remove the existing libssh2_knownhost_check() functin and rename
|
|
libssh2_knownhost_checkp() to become the new libssh2_knownhost_check instead
|
|
|
|
Buffering Improvements
|
|
======================
|
|
|
|
compression
|
|
|
|
- needs to ne able to take the input to compress from two pointers (with two
|
|
sizes) and generate a single compressed output chunk
|
|
|
|
- should also not allocate the compressed output buffer but use a single one
|
|
within the session struct (as transport_write() will copy the data off from
|
|
that buffer immediately anyway), or even better the transport_write()
|
|
function could allocate a buffer to fix an uncompressed buffer as then the
|
|
compression function can write its output directly into the allocated send
|
|
buffer
|
|
|
|
- should probably be split off into a separate compression and decompression
|
|
function instead of a single unified as they are now, to make these changes
|
|
easier
|
|
|
|
transport_write
|
|
|
|
- should accept a "packet struct" input with separate pointers to headers
|
|
and to payload (each of which may be allocated or not)
|
|
|
|
- Separating the headers from the payload will greatly enhance our ability
|
|
to use a fixed buffer within the session handle for the header part and
|
|
provide the payload part as a mere pointer.
|
|
|
|
- This function is used >30 times in the code.
|
|
|
|
- If this function gets called with a total packet size that is larger than
|
|
32K, it should create more than one SSH packet so that it keeps the largest
|
|
one below 32K
|
|
|
|
channel_write
|
|
|
|
- should not copy/allocate anything for the data, only create a header chunk
|
|
and pass on the payload data to transport_write "pointed to"
|
|
|
|
sftp_write
|
|
|
|
- should not copy/allocate anything for the data, only create a header chunk
|
|
and pass on the payload data to channel_write "pointed to"
|
|
|