added connect

This commit is contained in:
georgemoralis 2025-01-01 19:27:50 +02:00
parent 3a2675c906
commit 65ebf418ee
2 changed files with 19 additions and 2 deletions

View File

@ -16,8 +16,12 @@ int PS4_SYSV_ABI posix_socket(int domain, int type, int protocol) {
return socket;
}
int PS4_SYSV_ABI posix_connect(int sockfd, const struct OrbisNetSockaddr* addr, socklen_t addrlen) {
LOG_ERROR(Lib_Kernel, "(STUBBED) callled");
return 0;
auto* netcall = Common::Singleton<NetPosixInternal>::Instance();
int connect = netcall->net_connect(sockfd, addr, addrlen);
if (connect < 0) {
LOG_ERROR(Lib_Kernel, "error in connect = {}", connect);
}
return connect;
}
u32 PS4_SYSV_ABI posix_htonl(u32 hostlong) {
return htonl(hostlong);
@ -97,4 +101,16 @@ int NetPosixInternal::net_listen(int sockfd, int backlog) {
return 0; // TODO logging and error return
}
int NetPosixInternal::net_connect(int sockfd, const OrbisNetSockaddr* addr, socklen_t addrlen) {
std::scoped_lock lock{m_mutex};
const auto it = socks.find(sockfd);
if (it != socks.end()) {
s_socket sock = it->second;
sockaddr addr2;
convertOrbisNetSockaddrToPosix(addr, &addr2);
return ::connect(sock, &addr2, sizeof(sockaddr_in));
}
return 0; // TODO logging and error return
}
} // namespace Libraries::Kernel

View File

@ -68,6 +68,7 @@ public:
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);
int net_connect(int sockfd, const struct OrbisNetSockaddr* addr, socklen_t addrlen);
public:
s_socket sock;