Fix send buffer size for app and proxy

This commit is contained in:
varjolintu 2020-06-27 14:17:45 +03:00 committed by Jonathan White
parent 58e8d819c9
commit 1dd758c66a
No known key found for this signature in database
GPG Key ID: 440FC65F2E0C6E01
3 changed files with 29 additions and 0 deletions

View File

@ -28,6 +28,16 @@
#include "sodium.h"
#include <iostream>
#ifdef Q_OS_WIN
#include <fcntl.h>
#include <winsock2.h>
#include <windows.h>
#else
#include <sys/socket.h>
#include <sys/types.h>
#endif
BrowserHost::BrowserHost(QObject* parent)
: QObject(parent)
{
@ -77,6 +87,11 @@ void BrowserHost::readProxyMessage()
}
socket->setReadBufferSize(BrowserShared::NATIVEMSG_MAX_LENGTH);
int socketDesc = socket->socketDescriptor();
if (socketDesc) {
int max = BrowserShared::NATIVEMSG_MAX_LENGTH;
setsockopt(socketDesc, SOL_SOCKET, SO_SNDBUF, reinterpret_cast<char*>(&max), sizeof(max));
}
QJsonParseError error;
auto json = QJsonDocument::fromJson(socket->readAll(), &error);

View File

@ -53,4 +53,8 @@ if(WITH_XC_BROWSER)
COMMAND ${CMAKE_COMMAND} -E copy keepassxc-proxy ${PROXY_APP_DIR}/keepassxc-proxy
COMMENT "Copying keepassxc-proxy inside the application")
endif()
if(MINGW)
target_link_libraries(keepassxc-proxy Wtsapi32.lib Ws2_32.lib)
endif()
endif()

View File

@ -25,7 +25,12 @@
#ifdef Q_OS_WIN
#include <fcntl.h>
#include <winsock2.h>
#include <windows.h>
#else
#include <sys/socket.h>
#include <sys/types.h>
#endif
NativeMessagingProxy::NativeMessagingProxy()
@ -85,6 +90,11 @@ void NativeMessagingProxy::setupLocalSocket()
m_localSocket.reset(new QLocalSocket());
m_localSocket->connectToServer(BrowserShared::localServerPath());
m_localSocket->setReadBufferSize(BrowserShared::NATIVEMSG_MAX_LENGTH);
int socketDesc = m_localSocket->socketDescriptor();
if (socketDesc) {
int max = BrowserShared::NATIVEMSG_MAX_LENGTH;
setsockopt(socketDesc, SOL_SOCKET, SO_SNDBUF, reinterpret_cast<char*>(&max), sizeof(max));
}
connect(m_localSocket.data(), SIGNAL(readyRead()), this, SLOT(transferSocketMessage()));
connect(m_localSocket.data(), SIGNAL(disconnected()), this, SLOT(socketDisconnected()));