Skip to content

Commit

Permalink
Restarted process from GUI in desktop mode deskflow#4901
Browse files Browse the repository at this point in the history
  • Loading branch information
Xinyu Hou committed Jul 31, 2015
1 parent 86d5567 commit fc600ef
Show file tree
Hide file tree
Showing 3 changed files with 128 additions and 2 deletions.
96 changes: 96 additions & 0 deletions 1.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
diff --git a/src/lib/plugin/ns/SecureSocket.cpp b/src/lib/plugin/ns/SecureSocket.cpp
index 40c3f21..e02ba9d 100644
--- a/src/lib/plugin/ns/SecureSocket.cpp
+++ b/src/lib/plugin/ns/SecureSocket.cpp
@@ -35,12 +35,9 @@
//

#define MAX_ERROR_SIZE 65535
-
-enum {
- // this limit seems extremely high, but mac client seem to generate around
- // 50,000 errors before they establish a connection (wtf?)
- kMaxRetryCount = 100000
-};
+// RETRY_DELAY * MAX_RETRY = 10s
+#define MAX_RETRY 1000
+#define RETRY_DELAY 0.01f

enum {
kMsgSize = 128
@@ -61,8 +58,7 @@ SecureSocket::SecureSocket(
SocketMultiplexer* socketMultiplexer) :
TCPSocket(events, socketMultiplexer),
m_secureReady(false),
- m_fatal(false),
- m_maxRetry(kMaxRetryCount)
+ m_fatal(false)
{
}

@@ -72,8 +68,7 @@ SecureSocket::SecureSocket(
ArchSocket socket) :
TCPSocket(events, socketMultiplexer, socket),
m_secureReady(false),
- m_fatal(false),
- m_maxRetry(kMaxRetryCount)
+ m_fatal(false)
{
}

@@ -295,8 +290,7 @@ SecureSocket::secureAccept(int socket)

if (isFatal()) {
// tell user and sleep so the socket isn't hammered.
- LOG((CLOG_ERR "failed to accept secure socket"));
- LOG((CLOG_INFO "client connection may not be secure"));
+ LOG((CLOG_WARN "failed to accept secure socket"));
m_secureReady = false;
ARCH->sleep(1);
retry = 0;
@@ -318,6 +312,7 @@ SecureSocket::secureAccept(int socket)
if (retry > 0) {
LOG((CLOG_DEBUG2 "retry accepting secure socket"));
m_secureReady = false;
+ ARCH->sleep(RETRY_DELAY);
return 0;
}

@@ -351,6 +346,7 @@ SecureSocket::secureConnect(int socket)
if (retry > 0) {
LOG((CLOG_DEBUG2 "retry connect secure socket"));
m_secureReady = false;
+ ARCH->sleep(RETRY_DELAY);
return 0;
}

@@ -475,8 +471,8 @@ SecureSocket::checkResult(int status, int& retry)
}

// If the retry max would exceed the allowed, treat it as a fatal error
- if (retry > maxRetry()) {
- LOG((CLOG_ERR "passive ssl error limit exceeded: %d", retry));
+ if (retry > MAX_RETRY) {
+ LOG((CLOG_DEBUG "retry exceeded %d sec", RETRY_DELAY * MAX_RETRY));
isFatal(true);
}

diff --git a/src/lib/plugin/ns/SecureSocket.h b/src/lib/plugin/ns/SecureSocket.h
index 0c0f3b1..871e1e4 100644
--- a/src/lib/plugin/ns/SecureSocket.h
+++ b/src/lib/plugin/ns/SecureSocket.h
@@ -52,8 +52,6 @@ public:
int secureWrite(const void* buffer, int size, int& wrote);
void initSsl(bool server);
bool loadCertificates(String& CertFile);
- void maxRetry(int limit) { m_maxRetry = limit; };
- int maxRetry() const { return m_maxRetry; };

private:
// SSL
@@ -87,5 +85,4 @@ private:
Ssl* m_ssl;
bool m_secureReady;
bool m_fatal;
- int m_maxRetry;
};
25 changes: 24 additions & 1 deletion src/gui/src/MainWindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,8 @@ MainWindow::MainWindow(QSettings& settings, AppConfig& appConfig) :
m_pCancelButton(NULL),
m_SuppressAutoConfigWarning(false),
m_BonjourInstall(NULL),
m_SuppressEmptyServerWarning(false)
m_SuppressEmptyServerWarning(false),
m_ExpectedRunningState(kStopped)
{
setupUi(this);

Expand Down Expand Up @@ -142,6 +143,7 @@ MainWindow::MainWindow(QSettings& settings, AppConfig& appConfig) :
MainWindow::~MainWindow()
{
if (appConfig().processMode() == Desktop) {
m_ExpectedRunningState = kStopped;
stopDesktop();
}

Expand Down Expand Up @@ -777,6 +779,15 @@ void MainWindow::synergyFinished(int exitCode, QProcess::ExitStatus)
QMessageBox::critical(this, tr("Synergy terminated with an error"), QString(tr("Synergy terminated unexpectedly with an exit code of %1.<br><br>Please see the log output for details.")).arg(exitCode));
stopSynergy();
}

if (appConfig().processMode() == Desktop) {
if (m_ExpectedRunningState == kStarted) {
stopSynergy();
delay(1);
startSynergy();
}
}

#else
Q_UNUSED(exitCode);
#endif
Expand Down Expand Up @@ -823,6 +834,7 @@ void MainWindow::setSynergyState(qSynergyState state)
}

setStatus(tr("Synergy is running."));
m_ExpectedRunningState = kStarted;

break;
}
Expand Down Expand Up @@ -1338,3 +1350,14 @@ void MainWindow::delay(unsigned int s)
QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
}
}

void MainWindow::on_m_pButtonToggleStart_clicked()
{
if (m_SynergyState != synergyConnected) {
m_ExpectedRunningState = kStarted;
}
else {
m_ExpectedRunningState = kStopped;
}

}
9 changes: 8 additions & 1 deletion src/gui/src/MainWindow.h
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,11 @@ class MainWindow : public QMainWindow, public Ui::MainWindowBase
Info
};

enum qRuningState {
kStarted,
kStopped
};

public:
MainWindow(QSettings& settings, AppConfig& appConfig);
~MainWindow();
Expand Down Expand Up @@ -138,7 +143,7 @@ class MainWindow : public QMainWindow, public Ui::MainWindowBase
protected:
QSettings& settings() { return m_Settings; }
AppConfig& appConfig() { return m_AppConfig; }
QProcess*& synergyProcess() { return m_pSynergy; }
QProcess* synergyProcess() { return m_pSynergy; }
void setSynergyProcess(QProcess* p) { m_pSynergy = p; }
void initConnections();
void createMenuBar();
Expand Down Expand Up @@ -200,12 +205,14 @@ class MainWindow : public QMainWindow, public Ui::MainWindowBase
bool m_SuppressAutoConfigWarning;
CommandProcess* m_BonjourInstall;
bool m_SuppressEmptyServerWarning;
qRuningState m_ExpectedRunningState;

private slots:
void on_m_pCheckBoxAutoConfig_toggled(bool checked);
void on_m_pComboServerList_currentIndexChanged(QString );
void on_m_pButtonApply_clicked();
void installBonjour();
void on_m_pButtonToggleStart_clicked();
};

#endif
Expand Down

0 comments on commit fc600ef

Please sign in to comment.