*/
size_t NetworkStream::Read(void *buffer, size_t count)
{
- size_t rc = m_Socket->Read(buffer, count);
+ size_t rc;
+
+ try {
+ rc = m_Socket->Read(buffer, count);
+ } catch (...) {
+ m_Eof = true;
+
+ throw;
+ }
if (rc == 0)
m_Eof = true;
*/
void NetworkStream::Write(const void *buffer, size_t count)
{
- size_t rc = m_Socket->Write(buffer, count);
+ size_t rc;
+
+ try {
+ rc = m_Socket->Write(buffer, count);
+ } catch (...) {
+ m_Eof = true;
+
+ throw;
+ }
+
if (rc < count)
BOOST_THROW_EXCEPTION(std::runtime_error("Short write for socket."));
}
void Socket::SetFD(SOCKET fd)
{
if (fd != INVALID_SOCKET) {
- /* mark the socket as close-on-exec */
#ifndef _WIN32
+ /* mark the socket as close-on-exec */
Utility::SetCloExec(fd);
#endif /* _WIN32 */
}
void SetFD(SOCKET fd);
SOCKET GetFD(void) const;
- void SetConnected(bool connected);
-
int GetError(void) const;
mutable boost::mutex m_SocketMutex;