From abf8d2e209e393bf5916962ef8652eec9f1984c2 Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Thu, 3 Aug 2023 10:27:50 +1000 Subject: [PATCH] unix: Report connected status to socket module Report connected status to the socket module. Otherwise, operations like `getpeername` would not work correctly. Fixes #18534. Change-Id: I99d047f0d7b4d442cc2b3ea9222b0d89d216c1ae Reviewed-on: https://review.haiku-os.org/c/haiku/+/6719 Reviewed-by: waddlesplash Tested-by: Commit checker robot --- .../kernel/network/protocols/unix/UnixDatagramEndpoint.cpp | 1 + .../kernel/network/protocols/unix/UnixStreamEndpoint.cpp | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/add-ons/kernel/network/protocols/unix/UnixDatagramEndpoint.cpp b/src/add-ons/kernel/network/protocols/unix/UnixDatagramEndpoint.cpp index 30a3d08c96..ba63736450 100644 --- a/src/add-ons/kernel/network/protocols/unix/UnixDatagramEndpoint.cpp +++ b/src/add-ons/kernel/network/protocols/unix/UnixDatagramEndpoint.cpp @@ -185,6 +185,7 @@ UnixDatagramEndpoint::Connect(const struct sockaddr* _address) // Required by the socket layer. PeerAddress().SetTo(&fTargetEndpoint->socket->address); + gSocketModule->set_connected(Socket()); RETURN_ERROR(B_OK); } diff --git a/src/add-ons/kernel/network/protocols/unix/UnixStreamEndpoint.cpp b/src/add-ons/kernel/network/protocols/unix/UnixStreamEndpoint.cpp index 6a2302bbfe..e327456cf5 100644 --- a/src/add-ons/kernel/network/protocols/unix/UnixStreamEndpoint.cpp +++ b/src/add-ons/kernel/network/protocols/unix/UnixStreamEndpoint.cpp @@ -323,7 +323,7 @@ UnixStreamEndpoint::Connect(const struct sockaddr* _address) fState = unix_stream_endpoint_state::Connected; fWasConnected = true; - gSocketModule->set_connected(newSocket); + gSocketModule->set_connected(Socket()); release_sem(listeningEndpoint->fAcceptSemaphore); @@ -709,6 +709,8 @@ UnixStreamEndpoint::_Spawn(UnixStreamEndpoint* connectingEndpoint, fCredentials = listeningEndpoint->fCredentials; fState = unix_stream_endpoint_state::Connected; + + gSocketModule->set_connected(Socket()); }