If closeChannel() is called in between our channel open request to the
server and the corresponding reply, we cannot forward the close request
to the server, as we don't have its channel id yet. So wait until we do.
Our failure to correctly handle this sequence of events was the root cause
for the following user-visible errors:
- A (since-removed) Q_ASSERT in ~SshRemoteProcess() was hit.
- The server closed the connection because we referred to an invalid
channel ("Received ieof for nonexistent channel -1").
Commits 26920307f0 and 3027bcc952 are also related to this issue.
Change-Id: I4994d85f5b21a72682f75389cdf8769738bd6768
Reviewed-by: hjk <hjk121@nokiamail.com>
... and connect it using Qt5-style connects.
Change-Id: Ic7f36949b38d4773f5ac0f04853abf93bebcf467
Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
This can be triggered rather quickly by clicking "Run" for a short-
lived application on a QNX device. The state in this situation is
QSsh::Internal::AbstractSshChannel::SessionRequested.
Change-Id: I4447b85a4e8d6ba63e30f3783d29bb0c816e0dff
Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
Provide a QProcess-like abstraction that can be used
to implement processes running locally or on a remote
device. Objects of a concrete class implementing the functionality
are created by IDevice objects.
Current implementations are:
- Local execution (QProcess-based), provided via the DesktopDevice.
- Remote execution via SSH.
- A specialized case of the former for remote Linux systems (provided by
LinuxDevice).
The latter is already being used in a number of places. As a result, lots of
code dealing with details such as setting the remote environment could be
moved to a central location. These things are no longer the concern of whoever
is wishing to run a remote process.
Change-Id: I919260ee6e77a020ca47226a4a534e7b8398106f
Reviewed-by: hjk <hjk121@nokiamail.com>
QDoc does some magic with the \class and \namespaces
and \brief commands, so the following wording must be used:
"The xxx class yyy ..."
Change-Id: Id231f30e8464898b776888d5423523de404aae34
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
They are deprecated in Qt 5. Use fromLatin1() and toLatin1() instead. In
Qt 5, these always do the same thing as their "Ascii" counterparts. The
same goes for Qt 4, provided QTextCodec::setCodecForCStrings has not
been set, which it hasn't.
Change-Id: I04edeb376762b6671eff8156094f0d5e2cb8e1ea
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
This is the "direct-tcpip" port forwarding
specified in RFC 4254.
Change-Id: I1ffa2e923b4479c7211b1b4304e66895b565fb64
Reviewed-by: hjk <qthjk@ovi.com>
Reviewed-by: Christian Kandeler <christian.kandeler@nokia.com>
Old version was 1.8.8, new one is 1.10.2.
We now put all the code into one pair of files (via
a botan configure option) and move platform-specific
defines into the pro/qbs files. Besides drastically
reducing the number of files, this is expected to make
future updates less messy.
Change-Id: I004166b2ab15b6a699d69aebfcfd9999c5ccdb91
Reviewed-by: hjk <qthjk@ovi.com>
(We cannot use QProcess::ExitStatus itself, because it does not contain
FailedToStart.)
Change-Id: I83ed6de621e2693e539562cd8e56ef478fa4fcb9
Reviewed-by: hjk <qthjk@ovi.com>
It does not belong into libUtils, which is a collection of small
unrelated utility classes.
Task-number: QTCREATORBUG-7218
Change-Id: Id92b9f28678afec93e6f07166adfde6550f38072
Reviewed-by: Eike Ziller <eike.ziller@nokia.com>