Commit eed5e9ca authored by Joseph Noir's avatar Joseph Noir

Separate error check from string conversion

parent c39c2eae
...@@ -34,8 +34,9 @@ using caf::io::network::is_error; ...@@ -34,8 +34,9 @@ using caf::io::network::is_error;
using caf::io::network::rw_state; using caf::io::network::rw_state;
using caf::io::network::native_socket; using caf::io::network::native_socket;
using caf::io::network::socket_size_type; using caf::io::network::socket_size_type;
using caf::io::network::last_socket_error;
using caf::io::network::no_sigpipe_io_flag; using caf::io::network::no_sigpipe_io_flag;
using caf::io::network::last_socket_error_as_string; using caf::io::network::socket_error_as_string;
namespace caf { namespace caf {
namespace policy { namespace policy {
...@@ -46,7 +47,10 @@ rw_state tcp::read_some(size_t& result, native_socket fd, void* buf, ...@@ -46,7 +47,10 @@ rw_state tcp::read_some(size_t& result, native_socket fd, void* buf,
auto sres = ::recv(fd, reinterpret_cast<io::network::socket_recv_ptr>(buf), auto sres = ::recv(fd, reinterpret_cast<io::network::socket_recv_ptr>(buf),
len, no_sigpipe_io_flag); len, no_sigpipe_io_flag);
if (is_error(sres, true)) { if (is_error(sres, true)) {
CAF_LOG_ERROR("recv failed:" << last_socket_error_as_string()); // Make sure WSAGetLastError gets called immediately on Windows.
auto err = last_socket_error();
CAF_IGNORE_UNUSED(err);
CAF_LOG_ERROR("recv failed:" << socket_error_as_string(err));
return rw_state::failure; return rw_state::failure;
} else if (sres == 0) { } else if (sres == 0) {
// recv returns 0 when the peer has performed an orderly shutdown // recv returns 0 when the peer has performed an orderly shutdown
...@@ -64,7 +68,10 @@ rw_state tcp::write_some(size_t& result, native_socket fd, const void* buf, ...@@ -64,7 +68,10 @@ rw_state tcp::write_some(size_t& result, native_socket fd, const void* buf,
auto sres = ::send(fd, reinterpret_cast<io::network::socket_send_ptr>(buf), auto sres = ::send(fd, reinterpret_cast<io::network::socket_send_ptr>(buf),
len, no_sigpipe_io_flag); len, no_sigpipe_io_flag);
if (is_error(sres, true)) { if (is_error(sres, true)) {
CAF_LOG_ERROR("send failed:" << last_socket_error_as_string()); // Make sure WSAGetLastError gets called immediately on Windows.
auto err = last_socket_error();
CAF_IGNORE_UNUSED(err);
CAF_LOG_ERROR("send failed:" << socket_error_as_string(err));
return rw_state::failure; return rw_state::failure;
} }
CAF_LOG_DEBUG(CAF_ARG(len) << CAF_ARG(fd) << CAF_ARG(sres)); CAF_LOG_DEBUG(CAF_ARG(len) << CAF_ARG(fd) << CAF_ARG(sres));
...@@ -83,7 +90,7 @@ bool tcp::try_accept(native_socket& result, native_socket fd) { ...@@ -83,7 +90,7 @@ bool tcp::try_accept(native_socket& result, native_socket fd) {
if (result == invalid_native_socket) { if (result == invalid_native_socket) {
auto err = last_socket_error(); auto err = last_socket_error();
if (!would_block_or_temporarily_unavailable(err)) { if (!would_block_or_temporarily_unavailable(err)) {
CAF_LOG_ERROR("accept failed:" << last_socket_error_as_string()); CAF_LOG_ERROR("accept failed:" << socket_error_as_string(err));
return false; return false;
} }
} }
......
...@@ -33,7 +33,8 @@ using caf::io::network::ip_endpoint; ...@@ -33,7 +33,8 @@ using caf::io::network::ip_endpoint;
using caf::io::network::native_socket; using caf::io::network::native_socket;
using caf::io::network::signed_size_type; using caf::io::network::signed_size_type;
using caf::io::network::socket_size_type; using caf::io::network::socket_size_type;
using caf::io::network::last_socket_error_as_string; using caf::io::network::last_socket_error;
using caf::io::network::socket_error_as_string;
namespace caf { namespace caf {
namespace policy { namespace policy {
...@@ -46,7 +47,10 @@ bool udp::read_datagram(size_t& result, native_socket fd, void* buf, ...@@ -46,7 +47,10 @@ bool udp::read_datagram(size_t& result, native_socket fd, void* buf,
auto sres = ::recvfrom(fd, static_cast<io::network::socket_recv_ptr>(buf), auto sres = ::recvfrom(fd, static_cast<io::network::socket_recv_ptr>(buf),
buf_len, 0, ep.address(), &len); buf_len, 0, ep.address(), &len);
if (is_error(sres, true)) { if (is_error(sres, true)) {
CAF_LOG_ERROR("recvfrom failed:" << last_socket_error_as_string()); // Make sure WSAGetLastError gets called immediately on Windows.
auto err = last_socket_error();
CAF_IGNORE_UNUSED(err);
CAF_LOG_ERROR("recvfrom failed:" << socket_error_as_string(err));
return false; return false;
} }
if (sres == 0) if (sres == 0)
...@@ -66,7 +70,10 @@ bool udp::write_datagram(size_t& result, native_socket fd, void* buf, ...@@ -66,7 +70,10 @@ bool udp::write_datagram(size_t& result, native_socket fd, void* buf,
auto sres = ::sendto(fd, reinterpret_cast<io::network::socket_send_ptr>(buf), auto sres = ::sendto(fd, reinterpret_cast<io::network::socket_send_ptr>(buf),
buf_len, 0, ep.caddress(), len); buf_len, 0, ep.caddress(), len);
if (is_error(sres, true)) { if (is_error(sres, true)) {
CAF_LOG_ERROR("sendto failed:" << last_socket_error_as_string()); // Make sure WSAGetLastError gets called immediately on Windows.
auto err = last_socket_error();
CAF_IGNORE_UNUSED(err);
CAF_LOG_ERROR("sendto failed:" << socket_error_as_string(err));
return false; return false;
} }
result = (sres > 0) ? static_cast<size_t>(sres) : 0; result = (sres > 0) ? static_cast<size_t>(sres) : 0;
......
...@@ -85,7 +85,7 @@ struct ssl_policy { ...@@ -85,7 +85,7 @@ struct ssl_policy {
auto err = io::network::last_socket_error(); auto err = io::network::last_socket_error();
if (!io::network::would_block_or_temporarily_unavailable(err)) if (!io::network::would_block_or_temporarily_unavailable(err))
CAF_LOG_ERROR("accept failed:" CAF_LOG_ERROR("accept failed:"
<< io::network::last_socket_error_as_string()); << io::network::socket_error_as_string(err));
return false; return false;
} }
io::network::child_process_inherit(result, false); io::network::child_process_inherit(result, false);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment