Simon Josefsson <simon_at_josefsson.org> writes:
> There is more to work on though (i.e., GLOBAL_REQUEST), but I'll
> followup on that later.
I've completed this now.
For some wonderful reason, OpenSSH serverloop.c has this logic:
if ((channel_id = channel_find_open()) == -1) {
packet_start(SSH2_MSG_GLOBAL_REQUEST);
packet_put_cstring("keepalive_at_openssh.com");
packet_put_char(1); /* boolean: want reply */
} else {
channel_request_start(channel_id, "keepalive_at_openssh.com", 1);
}
Which means they use fall back on using a global request if it cannot
find an open channel. Why they don't always send a global request
instead is beyond me, it would appear simpler to do.
However, for completeness libssh2 should support this variant as well.
The main practical reason is that I suspect that other SSH servers out
there just send a GLOBAL_REQUEST instead of CHANNEL_REQUEST. I will
validate this theory with Bitvise/SSHD if I can get hold of them and
configure them properly.
Reproducing the GLOBAL_REQUEST scenario requires modifying the == to !=
in the code above, and re-build your sshd, but if you do, you will see:
debug2: channel 0: rcvd adjust 39321600
debug3: Wrote 52 bytes for a total of 2819
debug3: Wrote 52 bytes for a total of 2871
debug3: Wrote 68 bytes for a total of 2939
debug3: Wrote 68 bytes for a total of 3007
debug3: Wrote 68 bytes for a total of 3075
Timeout, client not responding.
OpenSSH doesn't really say what packets it sends, but I suspect they are
the 68 bytes packets.
Now, pull in the latest libssh2 from git (which now sports
GLOBAL_REQUEST keep-alive support too) and you will see:
debug3: Wrote 52 bytes for a total of 2819
debug3: Wrote 52 bytes for a total of 2871
debug3: Wrote 68 bytes for a total of 2939
debug1: Got 82/13 for keepalive
debug3: Wrote 68 bytes for a total of 3007
debug1: Got 82/14 for keepalive
debug3: Wrote 68 bytes for a total of 3075
debug1: Got 82/15 for keepalive
debug3: Wrote 68 bytes for a total of 3143
debug1: Got 82/16 for keepalive
debug3: Wrote 68 bytes for a total of 3211
debug1: Got 82/17 for keepalive
debug3: Wrote 68 bytes for a total of 3279
debug1: Got 82/18 for keepalive
/Simon
_______________________________________________
libssh2-devel http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel
Received on 2010-01-28