From da4b3b511fb1cbdc3d5cb9dd3023ddb0aab6a057 Mon Sep 17 00:00:00 2001 From: georgemoralis Date: Sun, 29 Dec 2024 00:43:26 +0200 Subject: [PATCH] added listen --- CMakeLists.txt | 4 ++-- src/core/libraries/kernel/posix_net.cpp | 15 ++++++++++++++- src/core/libraries/kernel/posix_net.h | 1 + 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a2c47f016..6bb276192 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -249,8 +249,8 @@ set(KERNEL_LIB src/core/libraries/kernel/sync/mutex.cpp src/core/libraries/kernel/time.h src/core/libraries/kernel/orbis_error.h src/core/libraries/kernel/posix_error.h - src/core/libraries/kernel/net.cpp - src/core/libraries/kernel/net.h + src/core/libraries/kernel/posix_net.cpp + src/core/libraries/kernel/posix_net.h ) set(NETWORK_LIBS src/core/libraries/network/http.cpp diff --git a/src/core/libraries/kernel/posix_net.cpp b/src/core/libraries/kernel/posix_net.cpp index 07e96ae4b..7e8def15f 100644 --- a/src/core/libraries/kernel/posix_net.cpp +++ b/src/core/libraries/kernel/posix_net.cpp @@ -27,7 +27,10 @@ int PS4_SYSV_ABI posix_bind(int sockfd, const struct OrbisNetSockaddr* addr, soc return bind; } int PS4_SYSV_ABI posix_listen(int sockfd, int backlog) { - return 0; + auto* netcall = Common::Singleton::Instance(); + int listen = netcall->net_listen(sockfd,backlog); + // todo check for errors + return listen; } int PS4_SYSV_ABI posix_accept(int sockfd, struct OrbisNetSockaddr* addr, socklen_t* addrlen) { return 0; @@ -73,4 +76,14 @@ int NetPosixInternal::net_bind(int sockfd, const struct OrbisNetSockaddr* addr, } return 0; // TODO logging and error return } +int NetPosixInternal::net_listen(int sockfd, int backlog) { + std::scoped_lock lock{m_mutex}; + const auto it = socks.find(sockfd); + if (it != socks.end()) { + s_socket sock = it->second; + return ::listen(sock,backlog); + } + return 0; // TODO logging and error return +} + } // namespace Libraries::Kernel \ No newline at end of file diff --git a/src/core/libraries/kernel/posix_net.h b/src/core/libraries/kernel/posix_net.h index da81f6986..2c0d7f2a8 100644 --- a/src/core/libraries/kernel/posix_net.h +++ b/src/core/libraries/kernel/posix_net.h @@ -55,6 +55,7 @@ public: ~NetPosixInternal() = default; int net_socket(int domain, int type, int protocol); int net_bind(int sockfd, const struct OrbisNetSockaddr* addr, socklen_t addrlen); + int net_listen(int sockfd, int backlog); public: s_socket sock;