Skip to content

Commit 079a2ba

Browse files
committed
LibCore+RequestServer: Implement Core::System::send on Windows
1 parent 85fd4d5 commit 079a2ba

File tree

2 files changed

+23
-14
lines changed

2 files changed

+23
-14
lines changed

Libraries/LibCore/SystemWindows.cpp

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,28 @@ ErrorOr<int> accept(int sockfd, struct sockaddr* addr, socklen_t* addr_size)
254254
return fd;
255255
}
256256

257+
ErrorOr<void> connect(int sockfd, struct sockaddr const* address, socklen_t address_length)
258+
{
259+
if (::connect(sockfd, address, address_length) == SOCKET_ERROR)
260+
return Error::from_windows_error();
261+
return {};
262+
}
263+
264+
ErrorOr<ssize_t> send(int sockfd, ReadonlyBytes data, int flags)
265+
{
266+
auto sent = ::send(sockfd, reinterpret_cast<char const*>(data.data()), static_cast<int>(data.size()), flags);
267+
268+
if (sent == SOCKET_ERROR) {
269+
auto error = WSAGetLastError();
270+
271+
return error == WSAEWOULDBLOCK
272+
? Error::from_errno(EWOULDBLOCK)
273+
: Error::from_windows_error(error);
274+
}
275+
276+
return sent;
277+
}
278+
257279
ErrorOr<ssize_t> sendto(int sockfd, ReadonlyBytes data, int flags, struct sockaddr const* destination, socklen_t destination_length)
258280
{
259281
auto sent = ::sendto(sockfd, reinterpret_cast<char const*>(data.data()), static_cast<int>(data.size()), flags, destination, destination_length);
@@ -361,13 +383,6 @@ ErrorOr<AddressInfoVector> getaddrinfo(char const* nodename, char const* servnam
361383
return AddressInfoVector { move(addresses), results };
362384
}
363385

364-
ErrorOr<void> connect(int socket, struct sockaddr const* address, socklen_t address_length)
365-
{
366-
if (::connect(socket, address, address_length) == SOCKET_ERROR)
367-
return Error::from_windows_error();
368-
return {};
369-
}
370-
371386
ErrorOr<void> kill(pid_t pid, int signal)
372387
{
373388
if (signal == SIGTERM) {

Services/RequestServer/RequestPipe.cpp

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -59,13 +59,7 @@ ErrorOr<RequestPipe> RequestPipe::create()
5959
ErrorOr<ssize_t> RequestPipe::write(ReadonlyBytes bytes)
6060
{
6161
#if defined(AK_OS_WINDOWS)
62-
auto sent = ::send(m_writer_fd, reinterpret_cast<char const*>(bytes.data()), bytes.size(), 0);
63-
if (sent == SOCKET_ERROR) {
64-
if (WSAGetLastError() == WSAEWOULDBLOCK)
65-
return Error::from_errno(EWOULDBLOCK);
66-
return Error::from_windows_error();
67-
}
68-
return sent;
62+
return Core::System::send(m_writer_fd, bytes, 0);
6963
#else
7064
return Core::System::write(m_writer_fd, bytes);
7165
#endif

0 commit comments

Comments
 (0)