diff options
-rw-r--r-- | pw_system/socket_target_io.cc | 6 | ||||
-rw-r--r-- | targets/host/system_rpc_server.cc | 6 |
2 files changed, 10 insertions, 2 deletions
diff --git a/pw_system/socket_target_io.cc b/pw_system/socket_target_io.cc index 55f105408..441de02b4 100644 --- a/pw_system/socket_target_io.cc +++ b/pw_system/socket_target_io.cc @@ -29,11 +29,15 @@ constexpr uint16_t kPort = PW_SYSTEM_SOCKET_IO_PORT; stream::SocketStream& GetStream() { static bool running = false; static std::mutex socket_open_lock; + static stream::ServerSocket server_socket; static stream::SocketStream socket_stream; std::lock_guard guard(socket_open_lock); if (!running) { printf("Awaiting connection on port %d\n", static_cast<int>(kPort)); - PW_CHECK_OK(socket_stream.Serve(kPort)); + PW_CHECK_OK(server_socket.Listen(kPort)); + auto accept_result = server_socket.Accept(); + PW_CHECK_OK(accept_result.status()); + socket_stream = *std::move(accept_result); printf("Client connected\n"); running = true; } diff --git a/targets/host/system_rpc_server.cc b/targets/host/system_rpc_server.cc index f3d870fc9..8ff75751a 100644 --- a/targets/host/system_rpc_server.cc +++ b/targets/host/system_rpc_server.cc @@ -35,6 +35,7 @@ uint16_t socket_port = 33000; static_assert(kMaxTransmissionUnit == hdlc::MaxEncodedFrameSize(rpc::cfg::kEncodingBufferSizeBytes)); +stream::ServerSocket server_socket; stream::SocketStream socket_stream; hdlc::FixedMtuChannelOutput<kMaxTransmissionUnit> hdlc_channel_output( @@ -58,7 +59,10 @@ void Init() { }); PW_LOG_INFO("Starting pw_rpc server on port %d", socket_port); - PW_CHECK_OK(socket_stream.Serve(socket_port)); + PW_CHECK_OK(server_socket.Listen(socket_port)); + auto accept_result = server_socket.Accept(); + PW_CHECK_OK(accept_result.status()); + socket_stream = *std::move(accept_result); } rpc::Server& Server() { return server; } |