diff --git a/include/icsneo/platform/socket.h b/include/icsneo/platform/socket.h index c3564b8..63895a1 100644 --- a/include/icsneo/platform/socket.h +++ b/include/icsneo/platform/socket.h @@ -103,6 +103,14 @@ public: #endif } + bool set_rcvbuf(uint32_t size) { + return ::setsockopt(mFD, SOL_SOCKET, SO_RCVBUF, (char*)&size, sizeof(size)) == 0; + } + + bool set_sndbuf(uint32_t size) { + return ::setsockopt(mFD, SOL_SOCKET, SO_SNDBUF, (char*)&size, sizeof(size)) == 0; + } + bool connect(const Address& to) { return ::connect(mFD, (sockaddr*)&to.sockaddr(), sizeof(sockaddr_in)) != -1; } @@ -203,13 +211,6 @@ public: return true; } - bool join_multicast(const std::string& interfaceIP, const std::string& multicastIP) { - ip_mreq mreq; - inet_pton(AF_INET, interfaceIP.c_str(), &mreq.imr_interface); - inet_pton(AF_INET, multicastIP.c_str(), &mreq.imr_multiaddr); - return setsockopt(mFD, IPPROTO_IP, IP_ADD_MEMBERSHIP, (const char*)&mreq, sizeof(mreq)) == 0; - } - operator bool() const { return mFD != -1; } operator SocketHandleType() const { return mFD; } private: diff --git a/platform/servd.cpp b/platform/servd.cpp index e97bbb2..4b1786f 100644 --- a/platform/servd.cpp +++ b/platform/servd.cpp @@ -116,6 +116,14 @@ bool Servd::open() { return false; } dataSocket = std::make_unique(AF_INET, SOCK_STREAM, 0); + if(!dataSocket->set_rcvbuf(4 * 1024 * 1024)) { + EventManager::GetInstance().add(APIEvent::Type::SyscallError, APIEvent::Severity::Error); + return false; + } + if(!dataSocket->set_sndbuf(4 * 1024 * 1024)) { + EventManager::GetInstance().add(APIEvent::Type::SyscallError, APIEvent::Severity::Error); + return false; + } const auto& ip = tokens[0]; uint16_t port = 0; try {