Disable STDIN listening when not needed

This commit is contained in:
varjolintu 2018-04-29 09:24:57 +03:00 committed by Jonathan White
parent 13a313ff66
commit 9d7e7c1ca8
6 changed files with 16 additions and 9 deletions

View File

@ -36,14 +36,16 @@
#include <io.h>
#endif
NativeMessagingBase::NativeMessagingBase()
NativeMessagingBase::NativeMessagingBase(const bool enabled)
{
#ifdef Q_OS_WIN
_setmode(_fileno(stdin), _O_BINARY);
_setmode(_fileno(stdout), _O_BINARY);
#else
m_notifier.reset(new QSocketNotifier(fileno(stdin), QSocketNotifier::Read, this));
connect(m_notifier.data(), SIGNAL(activated(int)), this, SLOT(newNativeMessage()));
if (enabled) {
m_notifier.reset(new QSocketNotifier(fileno(stdin), QSocketNotifier::Read, this));
connect(m_notifier.data(), SIGNAL(activated(int)), this, SLOT(newNativeMessage()));
}
#endif
}

View File

@ -44,7 +44,7 @@ class NativeMessagingBase : public QObject
Q_OBJECT
public:
explicit NativeMessagingBase();
explicit NativeMessagingBase(const bool enabled);
~NativeMessagingBase() = default;
protected slots:

View File

@ -27,8 +27,8 @@
#include <Winsock2.h>
#endif
NativeMessagingHost::NativeMessagingHost(DatabaseTabWidget* parent) :
NativeMessagingBase(),
NativeMessagingHost::NativeMessagingHost(DatabaseTabWidget* parent, const bool enabled) :
NativeMessagingBase(enabled),
m_mutex(QMutex::Recursive),
m_browserClients(m_browserService),
m_browserService(parent)
@ -77,6 +77,11 @@ void NativeMessagingHost::run()
QString serverPath = getLocalServerPath();
QFile::remove(serverPath);
// Ensure that STDIN is not being listened when proxy is used
if (m_notifier->isEnabled()) {
m_notifier->setEnabled(false);
}
if (m_localServer->isListening()) {
m_localServer->close();
}

View File

@ -31,7 +31,7 @@ class NativeMessagingHost : public NativeMessagingBase
typedef QList<QLocalSocket*> SocketList;
public:
explicit NativeMessagingHost(DatabaseTabWidget* parent = 0);
explicit NativeMessagingHost(DatabaseTabWidget* parent = 0, const bool enabled = false);
~NativeMessagingHost();
int init();
void run();

View File

@ -117,7 +117,7 @@ class BrowserPlugin: public ISettingsPage
{
public:
BrowserPlugin(DatabaseTabWidget* tabWidget) {
m_nativeMessagingHost = QSharedPointer<NativeMessagingHost>(new NativeMessagingHost(tabWidget));
m_nativeMessagingHost = QSharedPointer<NativeMessagingHost>(new NativeMessagingHost(tabWidget, BrowserSettings::isEnabled()));
}
~BrowserPlugin() {

View File

@ -22,7 +22,7 @@
#include <Winsock2.h>
#endif
NativeMessagingHost::NativeMessagingHost() : NativeMessagingBase()
NativeMessagingHost::NativeMessagingHost() : NativeMessagingBase(true)
{
m_localSocket = new QLocalSocket();
m_localSocket->connectToServer(getLocalServerPath());