From 66b37c856c29b77ab548063de2fb64a8435e8b9f Mon Sep 17 00:00:00 2001 From: Aris Adamantiadis Date: Mon, 11 Feb 2013 21:37:05 +0100 Subject: session: Introduce SSH_TIMEOUT_DEFAULT The default timeout of 30seconds is very nice when connecting to a new SSH session, however it completely breaks the synchronous blocking API. Use SSH_TIMEOUT_DEFAULT when in blocking mode so channel reads&write are blocking as expected Reviewed-by: Andreas Schneider --- src/session.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/session.c') diff --git a/src/session.c b/src/session.c index 4e71394..1faf0d6 100644 --- a/src/session.c +++ b/src/session.c @@ -512,6 +512,7 @@ int ssh_handle_packets(ssh_session session, int timeout) { * (-1) means an infinite timeout. * Specifying SSH_TIMEOUT_USER means to use the timeout * specified in options. 0 means poll will return immediately. + * SSH_TIMEOUT_DEFAULT uses blocking parameters of the session. * This parameter is passed to the poll() function. * * @param[in] fct Termination function to be used to determine if it is @@ -530,6 +531,11 @@ int ssh_handle_packets_termination(ssh_session session, int timeout, session->opts.timeout_usec); else timeout = SSH_TIMEOUT_NONBLOCKING; + } else if (timeout == SSH_TIMEOUT_DEFAULT){ + if(ssh_is_blocking(session)) + timeout = SSH_TIMEOUT_INFINITE; + else + timeout = SSH_TIMEOUT_NONBLOCKING; } ssh_timestamp_init(&ts); tm = timeout; -- cgit