diff --git a/common/cpp/src/system_io/system_io_linux.cpp b/common/cpp/src/system_io/system_io_linux.cpp
index 2d36ce58a179e3ef11df62c2387c1eb29b658a8a..be6393f3f1a7e5d0c6af9dfc6d3ff283833965b5 100644
--- a/common/cpp/src/system_io/system_io_linux.cpp
+++ b/common/cpp/src/system_io/system_io_linux.cpp
@@ -210,7 +210,8 @@ void SystemIO::ApplyNetworkOptions(SocketDescriptor socket_fd, Error* err) const
         ||*/
         setsockopt(socket_fd, SOL_SOCKET, SO_SNDBUF, (char*)&kNetBufferSize, sizeof(kNetBufferSize)) != 0
         ||
-        setsockopt(socket_fd, SOL_SOCKET, SO_REUSEADDR, &flag, sizeof(int)) != 0
+        setsockopt(socket_fd, SOL_SOCKET, SO_REUSEADDR, &flag, sizeof(int)) != 0 ||
+        setsockopt(socket_fd, SOL_SOCKET, SO_REUSEPORT, &flag, sizeof(int)) != 0
     ) {
         *err = GetLastError();
     }
diff --git a/receiver/src/main.cpp b/receiver/src/main.cpp
index 6c80cec86293f06f900d22aa778f771ce6abf555..c709542ed8f47bfb3a95c774d2dfd1a6eccec557 100644
--- a/receiver/src/main.cpp
+++ b/receiver/src/main.cpp
@@ -33,7 +33,7 @@ int main (int argc, char* argv[]) {
     logger->SetLogLevel(config->log_level);
 
     static const std::string dataserver_address = "0.0.0.0:" + std::to_string(config->dataserver_listen_port);
-    asapo::ReceiverDataServer data_server{dataserver_address};
+    asapo::ReceiverDataServer data_server{dataserver_address, config->log_level};
     std::thread server_thread (&asapo::ReceiverDataServer::Run, &data_server);
 
     static const std::string address = "0.0.0.0:" + std::to_string(config->listen_port);
diff --git a/receiver/src/receiver_data_server/receiver_data_server.cpp b/receiver/src/receiver_data_server/receiver_data_server.cpp
index 65a6b0ee8d796512790fa124401607d3a84680d8..cbc55c3fb2cc3507b59ecc73094ba34983256111 100644
--- a/receiver/src/receiver_data_server/receiver_data_server.cpp
+++ b/receiver/src/receiver_data_server/receiver_data_server.cpp
@@ -4,8 +4,9 @@
 
 namespace asapo {
 
-ReceiverDataServer::ReceiverDataServer(std::string address) : request_pool__{new RequestPool}, net__{new TcpServer(address)},
+ReceiverDataServer::ReceiverDataServer(std::string address, LogLevel log_level) : request_pool__{new RequestPool}, net__{new TcpServer(address)},
 log__{GetDefaultReceiverDataServerLogger()} {
+    GetDefaultReceiverDataServerLogger()->SetLogLevel(log_level);
 }
 
 void ReceiverDataServer::Run() {
diff --git a/receiver/src/receiver_data_server/receiver_data_server.h b/receiver/src/receiver_data_server/receiver_data_server.h
index 74a3ce97b8d217ae925fc972fd18deef80d658b4..8366bb048f1c65dc88c35613f5154d1f5505f46a 100644
--- a/receiver/src/receiver_data_server/receiver_data_server.h
+++ b/receiver/src/receiver_data_server/receiver_data_server.h
@@ -11,7 +11,7 @@ namespace asapo {
 
 class ReceiverDataServer {
   public:
-    explicit ReceiverDataServer(std::string address);
+    explicit ReceiverDataServer(std::string address, LogLevel log_level);
     std::unique_ptr<RequestPool> request_pool__;
     std::unique_ptr<NetServer> net__;
     const AbstractLogger* log__;
diff --git a/receiver/src/receiver_data_server/tcp_server.cpp b/receiver/src/receiver_data_server/tcp_server.cpp
index 61923e006f35e4d2f7327ed8b101b6f6b1c5004c..3dcaf0bb7d625d88565f5d32fd0a3f0a56ff0a8c 100644
--- a/receiver/src/receiver_data_server/tcp_server.cpp
+++ b/receiver/src/receiver_data_server/tcp_server.cpp
@@ -10,8 +10,7 @@ TcpServer::TcpServer(std::string address) : io__{GenerateDefaultIO()}, log__{Get
     address_{std::move(address)} {}
 
 Error TcpServer::InitializeMasterSocketIfNeeded() const noexcept {
-    Error
-    err;
+    Error err;
     if (master_socket_ == kDisconnectedSocketDescriptor) {
         master_socket_ = io__->CreateAndBindIPTCPSocketListener(address_, kMaxPendingConnections, &err);
         if (!err) {
@@ -26,10 +25,6 @@ Error TcpServer::InitializeMasterSocketIfNeeded() const noexcept {
 ListSocketDescriptors TcpServer::GetActiveSockets(Error* err) const noexcept {
     std::vector<std::string> new_connections;
     auto sockets = io__->WaitSocketsActivity(master_socket_, &sockets_to_listen_, &new_connections, err);
-    if (*err) {
-        return {};
-    }
-
     for (auto& connection : new_connections) {
         log__->Debug("new connection from " + connection);
     }
@@ -39,8 +34,8 @@ ListSocketDescriptors TcpServer::GetActiveSockets(Error* err) const noexcept {
 void TcpServer::CloseSocket(SocketDescriptor socket) const noexcept {
     sockets_to_listen_.erase(std::remove(sockets_to_listen_.begin(), sockets_to_listen_.end(), socket),
                              sockets_to_listen_.end());
-    io__->CloseSocket(socket, nullptr);
     log__->Debug("connection " + io__->AddressFromSocket(socket) + " closed");
+    io__->CloseSocket(socket, nullptr);
 }
 
 Request TcpServer::ReadRequest(SocketDescriptor socket, Error* err) const noexcept {
@@ -66,6 +61,7 @@ Requests TcpServer::ReadRequests(const ListSocketDescriptors& sockets) const noe
         if (err) {
             continue;
         }
+        log__->Debug("received request opcode: " + std::to_string(request.header.op_code)+" id: "+std::to_string(request.header.data_id));
         requests.emplace_back(std::move(request));
     }
     return requests;
diff --git a/receiver/unittests/receiver_data_server/test_receiver_data_server.cpp b/receiver/unittests/receiver_data_server/test_receiver_data_server.cpp
index 5cb9bf6812f89b0877d8ebfa488c78718818799a..c3875026eb9ee33d4674566c72a3069ca52173bf 100644
--- a/receiver/unittests/receiver_data_server/test_receiver_data_server.cpp
+++ b/receiver/unittests/receiver_data_server/test_receiver_data_server.cpp
@@ -35,7 +35,7 @@ using asapo::Error;
 namespace {
 
 TEST(ReceiverDataServer, Constructor) {
-    ReceiverDataServer data_server{""};
+    ReceiverDataServer data_server{"", asapo::LogLevel::Debug};
     ASSERT_THAT(dynamic_cast<const asapo::TcpServer*>(data_server.net__.get()), Ne(nullptr));
     ASSERT_THAT(dynamic_cast<asapo::RequestPool*>(data_server.request_pool__.get()), Ne(nullptr));
     ASSERT_THAT(dynamic_cast<const asapo::AbstractLogger*>(data_server.log__), Ne(nullptr));
@@ -45,7 +45,7 @@ TEST(ReceiverDataServer, Constructor) {
 class ReceiverDataServerTests : public Test {
   public:
     std::string expected_address = "somehost:123";
-    ReceiverDataServer data_server{expected_address};
+    ReceiverDataServer data_server{expected_address, asapo::LogLevel::Debug};
     asapo::MockNetServer mock_net;
     asapo::MockPool mock_pool;
     NiceMock<asapo::MockLogger> mock_logger;
diff --git a/receiver/unittests/receiver_data_server/test_tcp_server.cpp b/receiver/unittests/receiver_data_server/test_tcp_server.cpp
index 9dca74ee995d7dc61ef65543711ace97a5aaaa3d..4ba807b49802ebb924fe4cdcd89ac821235efe59 100644
--- a/receiver/unittests/receiver_data_server/test_tcp_server.cpp
+++ b/receiver/unittests/receiver_data_server/test_tcp_server.cpp
@@ -77,7 +77,7 @@ void TCPServerTests::ExpectListenMaster(bool ok) {
 
 void TCPServerTests::WaitSockets(bool ok, ListSocketDescriptors clients) {
     EXPECT_CALL(mock_io, WaitSocketsActivity_t(expected_master_socket, testing::Pointee(clients), _, _)).WillOnce(DoAll(
-                SetArgPointee<2>(expected_new_connections),
+                SetArgPointee<2>(ok ? expected_new_connections:std::vector<std::string>{}),
                 SetArgPointee<1>(expected_client_sockets),
                 SetArgPointee<3>(ok ? nullptr : asapo::IOErrorTemplates::kUnknownIOError.Generate().release()),
                 Return(ok ? expected_client_sockets : asapo::ListSocketDescriptors{})
@@ -158,6 +158,8 @@ void TCPServerTests::ExpectReceiveOk() {
                 A_ReceiveData(asapo::kOpcodeGetBufferData, conn),
                 testing::ReturnArg<2>()
             ));
+        EXPECT_CALL(mock_logger, Debug(AllOf(HasSubstr("request"), HasSubstr("id: "+std::to_string(conn)),
+            HasSubstr("opcode: "+std::to_string(asapo::kOpcodeGetBufferData)))));
     }
 }