# HG changeset patch # User Tero Marttila # Date 1252672488 -10800 # Node ID e411c0799fcc72126fa02f3d9c08b62032c1db0d # Parent 94dfb47036ef86d62ccd29fa89b7dbc5a4122272 fix NetworkSocket to not forget want_* state if resetting between connect()'s diff -r 94dfb47036ef -r e411c0799fcc src/Network/Socket.cc --- a/src/Network/Socket.cc Sat Jan 31 15:21:57 2009 +0200 +++ b/src/Network/Socket.cc Fri Sep 11 15:34:48 2009 +0300 @@ -19,15 +19,21 @@ } NetworkSocket::NetworkSocket (int family, int socktype, int protocol, NetworkReactor *reactor) : - sock_type(family, socktype, protocol), fd(-1), type(family, socktype, protocol), registered(0), reactor(reactor ? reactor : NetworkReactor::current) + sock_type(family, socktype, protocol), fd(-1), type(family, socktype, protocol), + bound(false), + registered(false), reactor(reactor ? reactor : NetworkReactor::current), + want_read(false), want_write(false) { - reset(); + } NetworkSocket::NetworkSocket (int fd, socket_type type, NetworkReactor *reactor) : - sock_type(type), fd(fd), type(type), registered(0), reactor(reactor ? reactor : NetworkReactor::current) + sock_type(type), fd(fd), type(type), + bound(false), + registered(false), reactor(reactor ? reactor : NetworkReactor::current), + want_read(false), want_write(false) { - reset(); + } NetworkSocket::~NetworkSocket (void) { @@ -41,9 +47,8 @@ } void NetworkSocket::reset (void) { + fd = -1; bound = false; - want_read = false; - want_write = false; } void NetworkSocket::lazy_socket (int family, int socktype, int protocol) { @@ -75,8 +80,7 @@ if (::closesocket(fd)) Engine::log(WARN, "socket.force_close") << "error closing socket: " << dump_errno(); - // reset state - fd = -1; + // forget fd reset(); } @@ -134,10 +138,9 @@ if (::getsockname(fd, addr.get_sockaddr(), addr.get_socklen_ptr())) throw NetworkSocketErrno(*this, "getsockname"); - // update + // updated sockaddr addr.update(); - // return addr return addr; } @@ -148,10 +151,9 @@ if (::getpeername(fd, addr.get_sockaddr(), addr.get_socklen_ptr())) throw NetworkSocketErrno(*this, "getpeername"); - // update + // updated sockaddr addr.update(); - // return addr return addr; } @@ -180,7 +182,6 @@ if (src) src->update(); - // done return socket; } @@ -296,8 +297,7 @@ if (::closesocket(fd)) throw NetworkSocketErrno(*this, "close"); - // reset - fd = -1; + // forget fd reset(); }