1
1
libssh2/TODO

115 строки
3.9 KiB
Plaintext
Исходник Обычный вид История

Things TODO
===========
2010-10-20 22:56:49 +02:00
* 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.
2009-04-14 21:43:39 +00:00
* Add more info to the man pages.
2010-10-20 22:56:49 +02:00
* Decrease the number of mallocs. Everywhere. Will get easier once the
buffering improvements have been done.
2010-10-20 22:56:49 +02:00
* 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
2009-04-14 21:43:39 +00:00
* Fix all compiler warnings (some can't be done without API changes)
* Expose error messages sent by the server
2010-10-20 22:56:49 +02:00
* 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.
2009-04-14 21:43:39 +00:00
* 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.
2010-03-10 18:50:29 +01:00
* 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
2010-10-20 22:56:49 +02:00
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"