]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Ensure ListenStateData constructed properly from ConnectionPointer
authorAmos Jeffries <squid3@treenet.co.nz>
Sat, 7 Aug 2010 15:31:08 +0000 (03:31 +1200)
committerAmos Jeffries <squid3@treenet.co.nz>
Sat, 7 Aug 2010 15:31:08 +0000 (03:31 +1200)
src/comm/ListenStateData.cc

index d0333cd1d6c6138f73a9fa7bfc6c9bd36fa418fc..625bd19e3a386d1a148b80ad4b244dee1dc7fed1 100644 (file)
@@ -84,6 +84,8 @@ Comm::ListenStateData::setListen()
 
 Comm::ListenStateData::ListenStateData(int aFd, AsyncCall::Pointer &call, bool accept_many) :
         fd(aFd),
+        errcode(0),
+        isLimited(0),
         theCallback(call),
         mayAcceptMore(accept_many)
 {
@@ -95,11 +97,12 @@ Comm::ListenStateData::ListenStateData(int aFd, AsyncCall::Pointer &call, bool a
 }
 
 Comm::ListenStateData::ListenStateData(Comm::ConnectionPointer &conn, AsyncCall::Pointer &call, bool accept_many, const char *note) :
-        fd(conn->fd),
+        errcode(0),
+        isLimited(0),
         theCallback(call),
         mayAcceptMore(accept_many)
 {
-    /* open teh conn if its not already open */
+    /* open the conn if its not already open */
     if (!IsConnOpen(conn)) {
         conn->fd = comm_open(SOCK_STREAM,
                              IPPROTO_TCP,
@@ -116,9 +119,11 @@ Comm::ListenStateData::ListenStateData(Comm::ConnectionPointer &conn, AsyncCall:
     }
 
     assert(IsConnOpen(conn));
-    debugs(5, 5, HERE << "FD " << fd << " AsyncCall: " << call);
+    fd = conn->fd;
+    debugs(5, 5, HERE << "FD " << conn->fd << " AsyncCall: " << call);
     setListen();
-    commSetSelect(fd, COMM_SELECT_READ, doAccept, this, 0);
+    if (errcode == 0)
+        commSetSelect(conn->fd, COMM_SELECT_READ, doAccept, this, 0);
 }
 
 Comm::ListenStateData::~ListenStateData()