А... ты еще кое где перелопатил...
Так`с 710 посылаем с задержкой (0.1с, у меня хватает).
Код: Выделить всё
18:16:40.920353 nxssh: (StdIn) NX> 1000 NXNODE - Version 3.5.0-0.2-CE OS (GPL, using backend: 3.5.99.22)
18:16:41.025116 nxssh: (StdIn) NX> 1009 Session status: starting
18:16:41.113416 nxssh: (StdIn) NX> 700 Session id: addm-VirtualBox-2002-29B735D94D37B00E9EC00E2CBED99DE2
18:16:41.114872 nxssh: (StdIn) NX> 705 Session display: 2002
18:16:41.114893 nxssh: (StdIn) NX> 703 Session type: unix-application
18:16:41.116331 nxssh: (StdIn) NX> 701 Proxy cookie: 71ee0caf48f947a8f00d69145fbcfe4f
18:16:41.116716 nxssh: (StdIn) NX> 702 Proxy IP: 127.0.1.1
18:16:41.117606 nxssh: (StdIn) NX> 706 Agent cookie: 71ee0caf48f947a8f00d69145fbcfe4f
18:16:41.119664 nxssh: (StdIn) NX> 704 Session cache: unix-application
18:16:41.119694 nxssh: (StdIn) NX> 707 SSL tunneling: 1
18:16:41.124141 nxssh: (StdIn) NX> 710 Session status: running
18:16:41.124765 nxssh: (StdIn) NX> 1002 Commit
И без задержки
Код: Выделить всё
17:53:44.510823 nxssh: (StdIn) NX> 1000 NXNODE - Version 3.5.0-0.2-CE OS (GPL, using backend: 3.5.99.22)
17:53:44.616774 nxssh: (StdIn) NX> 1009 Session status: starting
17:53:44.619566 nxssh: (StdIn) NX> 710 Session status: running
17:53:44.621380 nxssh: (StdIn) NX> 1002 Commit
Тут видно, что не были переданы с сервера параметры сессии, возможно ли прицепится к тому что они были переданы?
Борьба серьезная, за целую половину секунды!!!
З.Ы. Похоже RDP по скорости соединения, внезапно, обогнали... А это уже наглость!
Добавлено (18:32):
Ну и diff.
Если сессий будет много и в пакет не пролезет, возможно сломается, иначе не вижу причин, чтобы так не работало.
В любом случае, задержка в 1 секунду, почти на каждой стадии соединения, это выглядит отвратительно...
А еще лучше, в OpenNX, если будет глючить, можно завести галочку "Turbo connect" и возвращать тормозное соединение.
Код: Выделить всё
--- a/AsyncProcess.cpp
+++ b/AsyncProcess.cpp
@@ -145,8 +145,11 @@ AsyncProcess::Entry()
}
if (m_pEvtHandler) {
// If no LF received within a second, send buffer anyway
- if ((m_sSpecial.Len() && m_sOutBuf.StartsWith(m_sSpecial)) ||
- ((m_cOutWatch.Time() > 100) && (!m_sOutBuf.IsEmpty()))) {
+ //if ((m_sSpecial.Len() && m_sOutBuf.StartsWith(m_sSpecial)) || ((m_cOutWatch.Time() > 100) && (!m_sOutBuf.IsEmpty()))) {
+ //
+ //+Djelf: there is no need to wait, all data should already be in the buffer,
+ // with the exception of a long list of sessions, more than a TCP/IP packet
+ if (!m_sOutBuf.IsEmpty()) {
myLogTrace(MYTRACETAG, wxT("IoThread outwatch timed out"));
wxCommandEvent event(wxEVT_PROCESS_STDOUT, wxID_ANY);
event.SetString(m_sOutBuf);
@@ -180,8 +183,12 @@ AsyncProcess::Entry()
}
if (m_pEvtHandler) {
// If no LF received within a second, send buffer anyway
- if ((m_sSpecial.Len() && m_sErrBuf.StartsWith(m_sSpecial)) ||
- ((m_cErrWatch.Time() > 100) && (!m_sErrBuf.IsEmpty()))) {
+ //if ((m_sSpecial.Len() && m_sErrBuf.StartsWith(m_sSpecial)) ||
+ // ((m_cErrWatch.Time() > 100) && (!m_sErrBuf.IsEmpty()))) {
+ //
+ //+Djelf: there is no need to wait, all data should already be in the buffer,
+ // with the exception of a long list of sessions, more than a TCP/IP packet
+ if (!m_sErrBuf.IsEmpty()) {
myLogTrace(MYTRACETAG, wxT("IoThread errwatch timed out"));
wxCommandEvent event(wxEVT_PROCESS_STDERR, wxID_ANY);
event.SetString(m_sErrBuf);