Subject: [libssh2] Libssh2 status / documentation request

[libssh2] Libssh2 status / documentation request

From: Mark Erikson <>
Date: Wed, 17 Jan 2007 01:37:43 +0800

Hiya, folks. Got a few questions for you. First, let me describe my

I've got a project that includes a built-in terminal emulator. The GUI
is built using wxWidgets, and the terminal control is based on a class
called wxTerm that was borrowed from a project called taTelnet. wxTerm
just interprets and displays VT100 code, and doesn't do any connection
stuff. For our project, we created a wxSSH subclass that, through a
central Networking component, creates an invisible Plink process in the
background and just pipes all communications through there (Plink is the
command-line version of the Putty SSH client). The Networking component
also manages additional connections to the server, mostly one-shot
commands like directory listings and such, each done with more Plink

So, all this works okay, but I'd really like to rework the system so
that all of the SSH communication is handled internally, rather than
through an outside process. I've been evaluating various SSH toolkits
and trying to get a feel for how they do things. I like some of what I
see in libssh2, especially the fact that you have SCP support built into
the library, but I'd like some more information before I jump in.

First, I'm wondering if there's any further documentation or examples of
how to go about using libssh2 in a serious program, particularly for
terminal emulation support. The ssh2_sample.c kind of skimps out on
that area, instead just saying that "this is where stuff happens". The
API documentation is decent, but there's not a lot of help in how to use
that API. (As a side note, any chance you could include the API docs in
the distribution so they are available offline? I wound up copying and
pasting the individual wiki pages into three or four HTML documents
earlier today so I could have them on-hand.)

Second, one of the things I'm going to want to do is send the SSH
"window-change" command, which tells the server that the local terminal
has been resized. This is defined in the SSH spec as sending the words
"window-change", followed by a series of four integers defining the new
number of rows and columns. Aris Adamantiadis' libssh has support for
this (see
), but I don't see any explicit support for this in libssh2. I'm
guessing I'd have to set up a very specific character buffer and pass it
to libssh2_channel_write_ex, but I'm not 100% sure on that. Any

Third, I saw a few comments about possible slowness in some connections,
comments about blocking and non-blocking connections, and some
discussions of possible API changes. What's up with these areas, and
are there any plans for major changes in the near future?

Finally, I'd appreciate any suggestions or tips you might have in going
about this process and using the library.

Thanks in advance for any help you can give!

Mark Erikson

Take Surveys. Earn Cash. Influence the Future of IT
Join's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
libssh2-devel mailing list
Received on 2007-01-16