You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mina.apache.org by GitBox <gi...@apache.org> on 2022/05/23 17:46:14 UTC
[GitHub] [mina-sshd] tomaswolf opened a new pull request, #224: Asynchronous handling of global requests
tomaswolf opened a new pull request, #224:
URL: https://github.com/apache/mina-sshd/pull/224
Handling of global requests with want-reply=true was synchronous. This
is fine if the call is made on a non-I/O thread, but to be able to use
global requests in I/O threads, an asynchronous handling is needed.
Provide an asynchronous variant of Session.request() that returns a
future and that takes an optional reply handler as argument. If a
handler is given, it will be invoked by the framework once the reply
is received, on the I/O thread that received the reply. The future can
in this case be used to wait until the request has indeed be sent.
Without handler, the future can be used to await the reply on some
other thread, or to handle it via a future listener.
This makes global request handling much more flexible, avoids that a
synchronous implementation blocks an I/O thread, and it avoids problems
with making global requests while a key exchange is ongoing.
It also removes the restriction that there must be only one pending
global request per SSH session. The implementation keeps a FIFO list
of requests sent, and associates a reply with the front-most request
in that list. Only requests with want-reply=true enter that list.
Because of SSHD-968 we must also know the SSH message sequence number
of each global request made with want-reply=true. The previous
implementation assumed that the when a request was made, the next
packet written would be that request. But that may not be true when a
KEX is ongoing. Improve that implementation to report the sequence
number via a callback when the request's packet is indeed sent.
In AbstractSession.preClose(), fail all pending global requests.
Additionally, make Session.request() also work for global requests with
want-reply=false. Such requests can also be written directly with
Session.writePacket(), but it seems natural and convenient for users
of the library to also be able to use Session.request() for this.
Add some fairly advanced unit tests to verify the implementation. The
new unit tests showcase different implementations, somewhat simplified,
of a client-side OpenSshHostKeysHandler.
Add some technical documentation on global requests.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: dev-unsubscribe@mina.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@mina.apache.org
For additional commands, e-mail: dev-help@mina.apache.org
[GitHub] [mina-sshd] tomaswolf merged pull request #224: Asynchronous handling of global requests
Posted by GitBox <gi...@apache.org>.
tomaswolf merged PR #224:
URL: https://github.com/apache/mina-sshd/pull/224
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: dev-unsubscribe@mina.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@mina.apache.org
For additional commands, e-mail: dev-help@mina.apache.org