]> git.ipfire.org Git - thirdparty/squid.git/blobdiff - src/ipc/StartListening.cc
Renamed squid.h to squid-old.h and config.h to squid.h
[thirdparty/squid.git] / src / ipc / StartListening.cc
index 8e146f8272569b0d44c2823270745119c1d404c5..c13cc0ac223c0ce60860b47d3bcf31209a1969c2 100644 (file)
@@ -5,14 +5,15 @@
  *
  */
 
-#include "config.h"
+#include "squid.h"
 #include "base/TextException.h"
 #include "comm.h"
+#include "comm/Connection.h"
 #include "ipc/SharedListen.h"
 #include "ipc/StartListening.h"
 
 
-Ipc::StartListeningCb::StartListeningCb(): fd(-1), errNo(0)
+Ipc::StartListeningCb::StartListeningCb(): conn(NULL), errNo(0)
 {
 }
 
@@ -22,32 +23,33 @@ Ipc::StartListeningCb::~StartListeningCb()
 
 std::ostream &Ipc::StartListeningCb::startPrint(std::ostream &os) const
 {
-    return os << "(FD " << fd << ", err=" << errNo;
+    return os << "(" << conn << ", err=" << errNo;
 }
 
 void
-Ipc::StartListening(int sock_type, int proto, Ip::Address &addr, int flags,
+Ipc::StartListening(int sock_type, int proto, const Comm::ConnectionPointer &listenConn,
                     FdNoteId fdNote, AsyncCall::Pointer &callback)
 {
+    StartListeningCb *cbd = dynamic_cast<StartListeningCb*>(callback->getDialer());
+    Must(cbd);
+    cbd->conn = listenConn;
+
     if (UsingSmp()) { // if SMP is on, share
         OpenListenerParams p;
         p.sock_type = sock_type;
         p.proto = proto;
-        p.addr = addr;
-        p.flags = flags;
+        p.addr = listenConn->local;
+        p.flags = listenConn->flags;
         p.fdNote = fdNote;
         Ipc::JoinSharedListen(p, callback);
         return; // wait for the call back
     }
 
-    StartListeningCb *cbd = dynamic_cast<StartListeningCb*>(callback->getDialer());
-    Must(cbd);
-
     enter_suid();
-    cbd->fd = comm_open_listener(sock_type, proto, addr, flags, FdNote(fdNote));
-    cbd->errNo = cbd->fd >= 0 ? 0 : errno;
+    comm_open_listener(sock_type, proto, cbd->conn, FdNote(fdNote));
+    cbd->errNo = Comm::IsConnOpen(cbd->conn) ? 0 : errno;
     leave_suid();
 
-    debugs(54, 3, HERE << "opened listen FD " << cbd->fd << " on " << addr);
+    debugs(54, 3, HERE << "opened listen " << cbd->conn);
     ScheduleCallHere(callback);
 }