@@ -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+
257279ErrorOr<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-
371386ErrorOr<void > kill (pid_t pid, int signal)
372387{
373388 if (signal == SIGTERM) {
0 commit comments