- int ret = ::recvfrom(priv->handle, buf, size, 0, reinterpret_cast<sockaddr *>(&sa.addr), &sa.size);
- if(ret<0)
- {
- if(errno==EAGAIN)
- return 0;
- else
- {
-#ifdef _WIN32
- throw system_error("recvfrom", WSAGetLastError());
-#else
- throw system_error("recvfrom");
-#endif
- }
- }
-
+ size_t ret = check_sys_error(::recvfrom(priv->handle, buf, size, 0, reinterpret_cast<sockaddr *>(&sa.addr), &sa.size), "recvfrom");